繁体   English   中英

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

[英]How to retrieve data from sqlite3 database filled up using Python?

我正在使用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的更新实例,这意味着它已经创建了模型并正在不断更新数据库。 但我不知道如何离线检索此数据。

当我进入我的sqllite数据库sqlite3 app4.db和类型.tables它为我所有的表,即模型1,模型2,Model3但输入查询: select * from model1; 什么也没给。 我也尝试在Ipython shell中检索数据,也如上所述与数据库建立连接并查询list(Model1.select())但它给出了一个空列表。

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

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

如果要使用的话,应该是app4.db

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

您正在使用的命令看起来像在命令行上正确执行的命令。 在我看来,好像2件事中有1件事正在发生:

  1. 您实际上并没有将数据放入数据库中
  2. 您没有查看正在填充的同一数据库。

尝试重命名app4.db文件,然后重新运行您的应用程序,看看它是否创建了一个新文件。 这样,您可以确保在正确的版本上使用sqlite3。 如果您仍然没有使用列出的命令看到任何数据,那么我认为您的应用程序实际上并未将数据放入表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM