Python怎么连接数据库,读写数据那些事儿,简单点说怎么操作数据库里的内容
- 问答
- 2026-01-10 23:31:24
- 8
行,那咱们就直接说Python怎么操作数据库,说白了,操作数据库就三件事:连上它、从里面拿东西(读)、往里面放东西(写),下面我用最常用的 sqlite3(Python自带,不用装)和 pymysql(连MySQL用的)来举例子,道理都一样。
第一步:连上数据库
你想操作一个仓库,总得先把门打开吧?连接数据库就是开门。
连接SQLite数据库:
SQLite是个小型的数据库,整个数据库就是一个文件,特别适合自己学着玩或者小型项目,Python自带sqlite3库,直接用就行。
import sqlite3
# 连接到一个数据库文件,如果文件不存在,它会自己创建一个
conn = sqlite3.connect('test.db')
这行代码执行完,你就拿到了一个连接对象 conn,这个就是你通往数据库的“大门”。
连接MySQL数据库:
MySQL更常见于网站之类的正式项目,连接它需要先安装第三方库:pip install pymysql,连接时需要告诉Python数据库在哪、叫什么、用户名和密码是啥。
import pymysql
# 需要填你的数据库的实际信息
conn = pymysql.connect(
host='localhost', # 数据库服务器地址,本地就是localhost
user='root', # 用户名
password='123456', # 密码
database='test_db' # 你要连接的数据库名
)
同样,你也得到了一个连接对象 conn。
第二步:找个“帮手”——创建游标
光打开门还不行,你得有个帮手帮你进去搬东西、放东西,这个帮手就叫“游标”(Cursor)。
# 无论是SQLite还是MySQL,创建游标的方法都一样 cursor = conn.cursor()
这个 cursor 对象就是你的帮手,后面几乎所有的操作(执行命令、拿数据)都要通过它。
第三步:操作数据库里的内容
现在门开了,帮手也有了,就可以干活了,主要就是执行SQL语句。
读数据(SELECT)

比如数据库里有张表叫 users,你想看看里面都有谁。
# 写一条SQL查询语句
sql = "SELECT * FROM users"
# 让游标执行这条语句
cursor.execute(sql)
# 从游标那里拿到所有结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
fetchall() 是把所有结果一次性都拿出来,如果结果很多,怕内存吃不消,可以用 fetchone() 一次只拿一条,或者 fetchmany(5) 一次拿5条。
写数据(INSERT, UPDATE, DELETE)
-
增加新数据(INSERT) 比如要新增一个用户。
sql = "INSERT INTO users (name, age) VALUES (%s, %s)" # MySQL用%s占位 # 对于SQLite,占位符是问号 ?:VALUES (?, ?) # 要插入的具体数据,放在一个元组里 data = ('张三', 25) # 执行SQL语句 cursor.execute(sql, data)这里用了占位符
%s(MySQL)或 (SQLite),而不是直接把数据拼接到SQL字符串里。这非常重要! 可以防止“SQL注入”攻击,是一种安全规范。 -
修改数据(UPDATE) 想把张三的年龄改成26。

sql = "UPDATE users SET age = %s WHERE name = %s" data = (26, '张三') cursor.execute(sql, data)
-
删除数据(DELETE) 想删除张三这条记录。
sql = "DELETE FROM users WHERE name = %s" data = ('张三',) cursor.execute(sql, data)
重要提示: 执行了写操作(增、删、改)之后,数据其实还没真正存到数据库里!它只是在你当前的这次连接中生效了。
第四步:确认改变和打扫战场
提交事务(Commit) 为了让你的修改真正永久保存到数据库里,你必须“确认”一下,这个动作叫提交。
conn.commit()
你可以每执行一次写操作就提交一次,也可以等所有操作都做完了一次性提交。
关闭帮手和门 事情做完了,要养成好习惯,把帮手(游标)和门(连接)都关上,释放资源。
cursor.close() conn.close()
通常我们会用 with 语句来写,这样Python会自动帮我们关闭,更省心也更安全,比如连SQLite可以这样:
import sqlite3
with sqlite3.connect('test.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
... # 其他操作
# 出了with这个范围,conn和cursor会自动关闭,不用手动写close了
简单总结一下步骤:
- 连接:
conn = sqlite3.connect(...)或pymysql.connect(...) - 拿游标:
cursor = conn.cursor() - 执行SQL:
- 读:
cursor.execute(SQL)->cursor.fetchall() - 写:
cursor.execute(SQL, 数据)-> 一定要conn.commit()
- 读:
- 关闭:
cursor.close(),conn.close()(或用with语句自动关)
刚开始可能会觉得步骤有点多,但练几次就熟了,核心就是让Python通过SQL这个“数据库通用语言”去帮你办事,你先照着这个流程跑通,后面再慢慢深入了解细节。
本文由雪和泽于2026-01-10发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/78348.html
