0

这可能是一个愚蠢的问题。有没有办法在一个execute语句中执行多个查询?

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 回答