如何使用 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如何从生成的列表中查询和获取项目?

如何从我的 sqlite 数据库中获取数据

如何使用 SQLite 从数据库表中获取一个字段?

如何根据日期列中的月份从 SQLite 中获取数据

如何从 Javascript 中的 SQLite 数据库中获取表数据?

如何使用游标从sqlite android中的多个列中获取数据