尽管存在,但Sqlite3不会获取数据库行

时间:2016-12-25 02:15:52

标签: python sql database sqlite

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

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

在我的程序中,我连接到gamesapp数据库,执行select * from gamess并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...) 

对我来说这似乎很奇怪,因为如果我改变游戏的话,那么#34;对于不同的东西,Python说没有这样的表,如果我改变数据库名称,它说它不存在 - 我只是无法解决问题所在。

1 个答案:

答案 0 :(得分:3)

  

当我使用 cur.execute(create table...)

在程序中创建表时,fetchall()似乎才有效。

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

sql.connect('gamesapp.db')与程序启动的目录相关。如果您的代码是在知道可能位置的Web服务器上执行的?但您可以放心,它与您在命令行上测试代码时的情况不同。 (您可以查看import os; os.getcwd()

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

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