これはばかげた質問かもしれません。execute
1 つのステートメントで複数のクエリを実行する方法はありますか?
cursor = conn.cursor()
cursor.execute("Select * from my_tables; show tables;")
result = cursor.fetchall()
これはばかげた質問かもしれません。execute
1 つのステートメントで複数のクエリを実行する方法はありますか?
cursor = conn.cursor()
cursor.execute("Select * from my_tables; show tables;")
result = cursor.fetchall()
CLIENT_MULTI_STATEMENTS
とCLIENT_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を確認してください。