这可能是一个愚蠢的问题。有没有办法在一个execute
语句中执行多个查询?
cursor = conn.cursor()
cursor.execute("Select * from my_tables; show tables;")
result = cursor.fetchall()
答案 0 :(得分:1)
默认情况下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了解所有返回值的含义。