首页 > 数据库 > SQL > 正文

SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程

絕刀狂花
发布: 2025-08-05 08:26:01
原创
428人浏览过

python中执行sql查询,需先选择合适的数据库连接库,1. 对于sqlite使用内置sqlite3库,2. 对于postgresql安装psycopg2,3. 对于mysql使用pymysql或mysql-connector-python;通过connect()建立连接,使用cursor()创建游标执行sql语句,执行增删改操作后必须调用commit()提交更改,查询时使用fetchall()获取结果,最后关闭连接;为防止sql注入应使用参数化查询,如用?占位符传递参数;为提升性能在高并发场景下应使用数据库连接池,如通过sqlalchemy的create_engine配置pool_size和max_overflow管理连接;错误处理需使用try...except捕获相应异常如sqlite3.error,确保程序健壮性,所有操作完成后必须正确关闭连接或会话以释放资源。

SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程

在Python中执行SQL查询,简单来说,就是利用Python的数据库连接库(如

sqlite3
登录后复制
,
psycopg2
登录后复制
,
pymysql
登录后复制
等)建立与数据库的连接,然后通过游标对象执行SQL语句。

SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程

解决方案

首先,你需要选择一个适合你的数据库和Python的数据库连接库。例如,如果你的数据库是SQLite,Python内置了

sqlite3
登录后复制
库,无需额外安装。如果是PostgreSQL,则需要安装
psycopg2
登录后复制
。MySQL则需要
pymysql
登录后复制
mysql-connector-python
登录后复制

立即学习Python免费学习笔记(深入)”;

SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程

以SQLite为例:

import sqlite3

# 连接到数据库 (如果数据库不存在,则会创建一个)
conn = sqlite3.connect('my_database.db')

# 创建一个游标对象
cursor = conn.cursor()

# 执行SQL语句 (创建表)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
)
''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

# 提交更改
conn.commit()

# 执行查询
cursor.execute("SELECT * FROM users")

# 获取查询结果
results = cursor.fetchall()

# 打印结果
for row in results:
    print(row)

# 关闭连接
conn.close()
登录后复制

这段代码展示了如何连接到SQLite数据库,创建表,插入数据,执行查询并获取结果。重要的是

conn.commit()
登录后复制
,它用于保存更改。忘记提交,你的插入操作就白费了。

SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程

使用参数化查询

为了防止SQL注入攻击,务必使用参数化查询:

name = 'Charlie'
age = 35
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", (name, age))
conn.commit()
登录后复制

?
登录后复制
是占位符,Python数据库连接库会自动转义参数,防止恶意代码注入。

云雀语言模型
云雀语言模型

云雀是一款由字节跳动研发的语言模型,通过便捷的自然语言交互,能够高效的完成互动对话

云雀语言模型54
查看详情 云雀语言模型

如何选择合适的Python数据库连接库?

选择取决于你的数据库类型。

sqlite3
登录后复制
适合小型项目和学习,因为它无需安装额外的数据库服务器。
psycopg2
登录后复制
是PostgreSQL的推荐选择,性能好,功能强大。
pymysql
登录后复制
mysql-connector-python
登录后复制
用于连接MySQL,后者是MySQL官方提供的。

数据库连接池是什么?为什么需要它?

数据库连接池维护一组数据库连接,以便重复使用。每次执行查询都创建和关闭连接会消耗大量资源。连接池可以显著提高性能,尤其是在高并发环境下。

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建一个数据库引擎 (以PostgreSQL为例)
engine = create_engine('postgresql://user:password@host:port/database', pool_size=5, max_overflow=10)

# 创建一个会话类
Session = sessionmaker(bind=engine)

# 使用会话
session = Session()
try:
    # 执行查询
    results = session.execute("SELECT * FROM users")
    for row in results:
        print(row)
except Exception as e:
    print(f"Error: {e}")
finally:
    session.close() # 归还连接到连接池
登录后复制

sqlalchemy
登录后复制
是一个强大的ORM(对象关系映射)库,它提供了连接池功能,并简化了数据库操作。
pool_size
登录后复制
设置初始连接数,
max_overflow
登录后复制
设置最大连接数。用完连接后,必须关闭会话,将连接返回到连接池。

如何处理SQL查询中的错误?

错误处理至关重要。使用

try...except
登录后复制
块捕获异常:

try:
    cursor.execute("SELECT * FROM non_existent_table")
except sqlite3.Error as e:
    print(f"An error occurred: {e}")
登录后复制

sqlite3.Error
登录后复制
是SQLite特定的异常。对于其他数据库,你需要捕获相应的异常类型。良好的错误处理可以帮助你快速定位问题并改进代码。

以上就是SQL语言如何在Python中执行查询 SQL语言与Python连接数据库的完整教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号