python - Sqlite3 不会获取数据库行,尽管它们存在

标签 python sql database sqlite

我的问题让我很困惑,所以我决定最终创建一个帐户并寻求帮助:

我创建了一个名为 gamesapp.db 的数据库,其中包含一个名为 gamess 的表。当我在数据库浏览器中检查它时,我可以看到我之前创建的两行。

在我的程序中,我连接到 gamesapp 数据库,执行 select * from games 和 fetchall 以在 HTML 上打印它,但 fetchall 返回空白列表。

代码如下:

con = sql.connect('gamesapp.db')
cur = con.cursor()
cur.execute("select * from gamess")

print cur.fetchall()

我也试过

rows = cur.fetchall()
for row in rows:
   print row

运气不好。 fetchall() 似乎仅在我使用

在程序中创建表时才起作用
cur.execute(create table...) 

这对我来说似乎很奇怪,因为如果我将“游戏”更改为不同的东西,Python 会说没有这样的表,而且如果我更改数据库名称,它会说它不存在 - 我就是不能找到问题所在。

最佳答案

The fetchall() only seems to work when I create the table within the program with cur.execute(create table...)

这是因为您没有打开您认为打开的数据库文件。

sql.connect('gamesapp.db') 是相对于程序启动的目录。如果您的代码在网络服务器上执行,谁知道它可能在哪里?但您可以放心,这与您在命令行上测试代码时不同。 (您可以使用 import os; os.getcwd() 进行检查)

确保使用数据库文件的完整路径,并确保运行 Web 服务器的用户有权读取和写入它。

con = sql.connect('/full/path/to/my/gamesapp.db')

关于python - Sqlite3 不会获取数据库行,尽管它们存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318237/

相关文章:

mongodb - MongoDB 是否可用作并行处理/多实例应用程序的共享内存?

python - 首选 Azure 服务以可扩展的方式使用端点运行 python 脚本

python - 如何修复没有初始值错误的空序列的 reduce()?

c# - 使用 C# 的 SQL 中的空格

PHP:在数据库中设置密码字段的最大长度是多少?

java - 数据库异常

python - 导入错误 : cannot import name Ghost

python - 将 Excel 单元格值直接读取到复杂的 Python 对象,DataNitro

MySQL - 在同一 SQL 的嵌套 SQL 语句中使用 select 字段值

sql - SQL Server 2008 可以水平扩展吗?