我正在使用这个样本SQLite数据库,我的代码是:
import sqlite3
conn = sqlite3.connect('chinook.db')
conn.execute("SELECT * FROM tracks")
rows = conn.cursor().fetchall()
这本应该起作用的,但是rows
为空?
我在这里做错了什么吗?
Connection.execute
是一个快捷方式,返回一个cursor
实例,需要使用fetchall
方法来访问数据。在您的代码中,您正在创建一个新的独立游标。
因此:
import sqlite3
conn = sqlite3.connect('chinook.db')
cursor = conn.execute("SELECT * FROM tracks")
rows = cursor.fetchall()
甚至更短(不建议这样做,但适用于喜欢晦涩难懂的一行代码):
rows = sqlite3.connect('chinook.db').execute("SELECT * FROM tracks").fetchall()
或者不要使用Connection.execute
的快捷方式,以避免混淆:
import sqlite3
conn = sqlite3.connect('chinook.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM tracks")
rows = cursor.fetchall()
.execute()
游标。 - Corionconn.execute()
是一个快捷方式。然而,它返回的是游标,这就是问题所在。 - 9769953conn.cursor().fetchall(); conn.execute()
吗? - Eka