我会在这里向每个使用MySQLdb或任何其他包连接Python2/3的人重申最佳实践,请您注意:
(以下模拟运行假设您在SQL数据库中有一个名为tablename的表,它有4个名为field1、field2、field3和field4的列/字段。如果您的连接是本地连接(同一台计算机),则IP地址是127.0.0.1,也称为“localhost”)。
这个过程可以简单地概括为7个步骤:
- 创建连接
- 创建游标
- 创建查询字符串
- 执行查询
- 提交查询
- 关闭游标
- 关闭连接
这里是一个简单的模拟运行过程:
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,但在数据库本身中是一个频繁使用的数据结构。”
根据底层实现,可能会生成多个共享同一数据库连接的游标。关闭游标应该释放与查询相关联的资源,包括从数据库中获取但从未获取(或获取但未使用)的任何结果,但不会消除对数据库本身的连接,因此您将能够在同一数据库上获取新的游标而无需再次进行身份验证。”