我将在每个遇到使用 MySQLdb 或任何其他包连接 python2/3 需要知道这一点的 sql 连接的人身上重复最佳实践
(在模拟运行之后假设您的 sql 数据库中有一个名为 tablename 的表。它有 4 个列/字段,名称为 field1、field2、field3、field4)。如果您的连接是本地的(同一台机器),那么它是 127.0.0.1,也称为“localhost”。
过程很简单 7个步骤
- 创建连接
- 创建光标
- 创建查询字符串
- 执行查询
- 提交查询
- 关闭光标
- 关闭连接
这是stem mock run的一个简单步骤
mydb = MySQLdb.connect(host=host, user=user, passwd=passwd, db=database, charset="utf8")
cursor = mydb.cursor()
query = "INSERT INTO tablename (text_for_field1, text_for_field2, text_for_field3, text_for_field4) VALUES (%s, %s, %s, %s)"
cursor.execute(query, (field1, field2, field3, field4))
mydb.commit()
cursor.close()
mydb.close()
连接和游标是不同的。连接是在 SQL 级别,而游标可以被视为数据元素。您可以在单个连接中的同一数据上有多个游标。从同一台计算机对相同数据进行多个连接是一种不寻常的情况。
此处描述了更多内容
“游标范式并非特定于 Python,而是数据库本身中常见的数据结构。
根据底层实现,可能会生成多个共享同一个数据库连接的游标。关闭游标应该释放与查询关联的资源,包括从未从数据库中获取(或已获取但未使用)的任何结果,但不会消除与数据库本身的连接,因此您将能够在同一数据库上获取新游标无需再次验证。”