如何从使用Python填充的sqlite3数据库中检索数据?

时间:2015-09-22 22:02:49

标签: python database sqlite peewee

我正在使用peewee和flask一起使用用户的输入和各种其他统计数据来填充我的数据库。如何在sqlite3数据库中检索数据? 这是骨架:

from peewee import *
database = SqliteDatabase('app4.db', autocommit=True)
class BaseModel(Model):
 class Meta:
  database = database    

class Model1(BaseModel):

class Model2(BaseModel):

class Model3(BaseModel):

app = Flask(__name__)

@app.before_request
def func1():
 database.connect()

@app.after_request
def func2(response):
 database.close()
 return response 

@app.route('/', method= ['GET'])
def some_func():
 #update pluto and create instances of Model2 and Model3 here

if __name__ == "__main__":
 database.connect()
 database.create_tables([Model1, Model2, Model3], True)
 pluto, created = Model1.get_or_create(key = 2, key2 = 0)

我的应用程序正在运行并显示Model1和Model2的更新实例,这意味着它已创建模型并不断更新数据库。 但我不知道如何离线检索这些数据。

当我按sqlite3 app4.db输入我的sqllite数据库并输入.tables时,它会显示所有表格,即Model1,Model2,Model3,但输入查询:select * from model1;不提供任何内容。我尝试在Ipython shell中检索数据,如上所述连接到数据库并查询list(Model1.select()),但它给出了一个空列表。

2 个答案:

答案 0 :(得分:0)

您的数据库文件名似乎设置为app.py

database = SqliteDatabase('app.py', autocommit=True)

如果你想要使用它,那应该是app4.db

database = SqliteDatabase('app4.db', autocommit=True)

答案 1 :(得分:0)

您使用的命令在命令行中使用的命令与正确的命令相似。听起来像是两件事中的一件发生了:

  1. 您实际上并未将数据放入数据库
  2. 您没有查看正在填充的同一个数据库。
  3. 尝试重命名app4.db文件,然后重新运行您的应用,看看它是否创建了新应用。这样您就可以确保在正确的sqlite3上使用sqlite3。如果您仍然没有使用列出的命令看到任何数据,我会假设您的应用实际上没有将数据放入表中。