我的问题让我很困惑,以至于我决定最终创建一个帐户并寻求帮助:
我创建了一个名为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说没有这样的表,如果我改变数据库名称,它说它不存在 - 我只是无法解决问题所在。
答案 0 :(得分:3)
当我使用
在程序中创建表时,fetchall()似乎才有效。cur.execute(create table...)
这是因为您没有打开您认为的数据库文件。
sql.connect('gamesapp.db')
与程序启动的目录相关。如果您的代码是在知道可能位置的Web服务器上执行的?但您可以放心,它与您在命令行上测试代码时的情况不同。 (您可以查看import os; os.getcwd()
)
确保使用数据库文件的完整路径,并确保Web服务器正在运行的用户具有读取和写入权限的权限。
con = sql.connect('/full/path/to/my/gamesapp.db')