我正在使用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())
,但它给出了一个空列表。
答案 0 :(得分:0)
您的数据库文件名似乎设置为app.py
:
database = SqliteDatabase('app.py', autocommit=True)
如果你想要使用它,那应该是app4.db
:
database = SqliteDatabase('app4.db', autocommit=True)
答案 1 :(得分:0)
您使用的命令在命令行中使用的命令与正确的命令相似。听起来像是两件事中的一件发生了:
尝试重命名app4.db文件,然后重新运行您的应用,看看它是否创建了新应用。这样您就可以确保在正确的sqlite3上使用sqlite3。如果您仍然没有使用列出的命令看到任何数据,我会假设您的应用实际上没有将数据放入表中。