0

これはばかげた質問かもしれません。execute1 つのステートメントで複数のクエリを実行する方法はありますか?

cursor = conn.cursor()
cursor.execute("Select * from my_tables; show tables;")
result = cursor.fetchall()
4

1 に答える 1

1

CLIENT_MULTI_STATEMENTSCLIENT_MULTI_RESULTSオプションがデフォルトで有効になっているように見えるMySQLdbので(これはかなり不安です)、次のようなことができます...

>>> import MySQLdb
>>> conn = MySQLdb.connect(db='test')
>>> cur = conn.cursor()
>>> cur.execute('select * from foo; show tables;')
2L
>>> cur.fetchall()
((1L,), (1L,))
>>> cur.nextset()
1
>>> cur.fetchall()
(('foo',),)

InnoDB テーブルに変更を加える例を示したい場合は、次のようなトランザクションをコミットする必要があります...

>>> cur.execute('select * from foo; insert into foo values (123);')
2L
>>> cur.nextset()
1
>>> conn.commit()
>>> cur.execute('select * from foo')
3L
>>> cur.fetchall()
((1L,), (1L,), (123L,))

すべての戻り値の意味については、PEP249を確認してください。

于 2013-06-17T14:27:45.530 に答える