我的问题使我感到困惑,以至于我决定最终创建一个帐户并寻求帮助:
我创建了一个名为gamesapp.db的数据库,其中包含一个名为games的表.在数据库浏览器中检查它时,可以看到我之前创建的两行.
在我的程序中,我连接到gamesapp数据库,从gamess中执行select *,然后执行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’)相对于程序启动的目录.如果您的代码在Web服务器上执行,谁知道那可能在哪里?但是可以放心,它与在命令行上测试代码时不同. (您可以使用import os; os.getcwd()进行检查)
为确保使用数据库文件的完整路径,并确保Web服务器正在运行的用户具有读写权限.
con = sql.connect('/full/path/to/my/gamesapp.db')
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!