Sqlite3无法获取数据库行,尽管它们存在

2024-09-28 19:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我创建了一个名为游戏.db有张桌子叫gamess。当我在db browser中检查它时,我可以看到前面创建的两行。你知道吗

在我的程序中,我连接到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...) 

这对我来说似乎很奇怪,因为如果我把“gamess”改成别的东西,Python会说没有这样的表,如果我改了数据库名,它会说它不存在——我就是搞不清楚问题出在哪里。你知道吗


Tags: from数据库游戏executedb帐户conselect
1条回答
网友
1楼 · 发布于 2024-09-28 19:28:51

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

这是因为你没有打开你认为是的数据库文件。你知道吗

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

请确保使用数据库文件的完整路径,并确保运行web服务器的用户具有读写权限。你知道吗

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

相关问题 更多 >