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

Python Sqlite3不会获取数据库行,尽管它们存在,python,sql,database,sqlite,Python,Sql,Database,Sqlite,我的问题让我非常困惑,我决定最终创建一个帐户并寻求帮助: 我创建了一个名为gamesapp.db的数据库和一个名为gamess的表。当我在db浏览器中检查它时,我可以看到我先前创建的两行 在我的程序中,我连接到gamesapp数据库,从gamess和fetchall执行select*以在HTML上打印,但fetchall返回空白列表 代码如下: con = sql.connect('gamesapp.db') cur = con.cursor() cur.execute("select * fr

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

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

在我的程序中,我连接到gamesapp数据库,从gamess和fetchall执行select*以在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...) 
这对我来说似乎很奇怪,因为如果我将games更改为其他内容,Python会说没有这样的表,如果我更改数据库名称,它会说它不存在——我就是不知道问题出在哪里

fetchall似乎只有在我使用cur.executecreate table在程序中创建表时才起作用

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

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

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

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

你绝对确定这是两种情况下使用的完全相同的.db文件吗?请使用连接中gamesapp.db的完整路径。非常感谢,我找不到关于它的信息,我还没有深入到足以让我自己思考的程度。现在效果很好。