如何使用 python 从 sqlite 获取数据?
Posted
技术标签:
【中文标题】如何使用 python 从 sqlite 获取数据?【英文标题】:How to fetch data from sqlite using python? 【发布时间】:2019-03-19 19:13:45 【问题描述】:我正在使用这个示例sqlite database,我的代码是
import sqlite3
conn=sqlite3.connect('chinook.db')
conn.execute("SELECT * FROM tracks")
rows= conn.cursor().fetchall()
for row in rows:
print row
它应该可以工作,但没有输出?我在这里做错了什么?
【问题讨论】:
你永远不会.execute()
光标。
@Corion: conn.execute()
是一个快捷方式。但是,它确实会返回光标,这就是问题所在。
什么是执行 cursor() 的正确方法。是conn.cursor().fetchall(); conn.execute()
@Eka:都在the documentation。
【参考方案1】:
Connection.execute
shortcut 返回一个cursor
实例,您需要将其与fetchall
一起使用。在您的代码中,您正在创建一个新的独立光标。
因此:
from __future__ import print_function
import sqlite3
conn = sqlite3.connect('chinook.db')
cursor = conn.execute("SELECT * FROM tracks")
rows = cursor.fetchall()
for row in rows:
print(row)
甚至更短(不推荐,但适合那些喜欢模糊单行线的人):
rows = sqlite3.connect('chinook.db').execute("SELECT * FROM tracks").fetchall()
或者不要使用Connection.execute
快捷方式,以免混淆:
from __future__ import print_function
import sqlite3
conn = sqlite3.connect('chinook.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM tracks")
rows = cursor.fetchall()
for row in rows:
print(row)
【讨论】:
确实,OP 使用的是 Python 2,但您的代码在添加括号的两个版本中都可以完美运行。这是目前在 Google 上将 SQLite 与 Python 结合使用的最佳结果之一,因此大多数看到您的答案的人都在使用 Python 3。由于 OP 可能早已继续前进,请您重新考虑让答案同时适用于这两个版本吗?跨度>以上是关于如何使用 python 从 sqlite 获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
Python sqlite如何从生成的列表中查询和获取项目?