使用MySQLdb多次执行

时间:2012-02-19 18:50:14

标签: python mysql

我有一个python脚本,可以在INSERTs数据库中生成大约10 MySQL个。这是它目前的结构:

conn = MySQLdb.connect (host = DB_HOST,
                        port = DB_PORT,
                        user = DB_USER,
                        passwd = DB_PASSWORD,
                        db = DB_NAME)
cursor = conn.cursor()
cursor.execute("INSERT INTO...")
# do some stuff, then another INSERT
cursor.execute("INSERT INTO...")
# do some other stuff, then another INSERT
cursor.execute("INSERT INTO...")
etc...
conn.commit()
cursor.close()
conn.close()

以上是进行多次插入的正确方法,还是应该在每次INSERT之后关闭光标?我应该在每个commit之后做INSERT吗?

1 个答案:

答案 0 :(得分:3)

  

每次插入后我应该关闭光标吗?

没关系。游标被巧妙地重用。

您可以关闭它们以过分关注您的资源。

这样做。

from contextlib import closing
with closing( conn.cursor() ) as cursor:
    cursor.execute("INSERT INTO...")

这确保无论发生什么样的异常,光标都会关闭。

  

我应该在每次INSERT后进行提交吗?

这取决于您的应用程序应该做什么。

如果它是“全有或全无”的命题,那么你做一次提交。所有插件都很好或者都不是。

如果部分结果可以接受,那么您可以在每次插入后提交。