如何使用peewee在model FlaskDB中创建表格?
离开文档 我有以下代码:如何使用peewee在model FlaskDB中创建表格?,flask,peewee,flask-peewee,Flask,Peewee,Flask Peewee,离开文档 我有以下代码: from playhouse.flask_utils import FlaskDB, app = Flask(__name__) app.config.from_object(__name__) flask_db = FlaskDB(app) database = flask_db.database class Item(flask_db.Model): title = CharField() content = TextField() ca
from playhouse.flask_utils import FlaskDB,
app = Flask(__name__)
app.config.from_object(__name__)
flask_db = FlaskDB(app)
database = flask_db.database
class Item(flask_db.Model):
title = CharField()
content = TextField()
category = CharField()
@app.route('/create',methods=('GET','POST'))
def create():
if request.method == 'POST':
if request.form.get('title') and request.form.get('content'):
item = Item.create(
title = request.form['title'],
content = request.form['content'],
category = request.form['category'])
flash('Item created successfully','success')
return redirect(url_for('view'),item=item)
else:
flash('Title and Content are required.','danger')
form = ItemForm()
return render_template('create.html',form=form)
if __name__ == '__main__':
database.create_tables(Item)
app.run(debug=True)
他们说:
基于应用程序配置数据动态创建Peewee数据库实例
但是,我相信我仍然需要创建表,事实上,当我在不做倒数第二行的情况下尝试创建表时,我可以看到创建的blog.db文件中不存在任何表。不幸的是,当我现在运行时,我得到:
Traceback (most recent call last):
sqliteext:////Users/conduce-laptop/PycharmProjects/alexmarshall.website/blog.db
File "/Users/conduce-laptop/PycharmProjects/alexmarshall.website/website2.py", line 73, in <module>
database.create_tables(Item)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3855, in create_tables
create_model_tables(models, fail_silently=safe)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 5293, in create_model_tables
for m in sort_models_topologically(models):
File "playhouse/_speedups.pyx", line 341, in playhouse._speedups.sort_models_topologically (playhouse/_speedups.c:7091)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 4862, in __iter__
return iter(self.select())
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3240, in __iter__
return iter(self.execute())
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3233, in execute
self._qr = ResultWrapper(model_class, self._execute(), query_meta)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 2912, in _execute
return self.database.execute_sql(sql, params, self.require_commit)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3775, in execute_sql
self.commit()
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3598, in __exit__
reraise(new_type, new_type(*exc_args), traceback)
File "/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py", line 3768, in execute_sql
cursor.execute(sql, params or ())
peewee.OperationalError: no such table: item
回溯(最近一次呼叫最后一次):
sqliteext:////Users/conduce-laptop/PycharmProjects/alexmarshall.website/blog.db
文件“/Users/conduce-laptop/PycharmProjects/alexmarshall.website/website2.py”,第73行,在
数据库。创建_表(项)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第3855行,在创建表格中
创建模型表(模型,失败=安全)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第5293行,在创建模型表中
对于排序中的m\u模型\u拓扑(模型):
文件“playhouse/\u speedups.pyx”,第341行,在playhouse中。按拓扑结构对模型进行排序(playhouse/\u speedups.c:7091)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第4862行,在__
返回iter(self.select())
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第3240行,在__
返回iter(self.execute())
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,执行中第3233行
self.\u qr=ResultWrapper(模型类,self.\u执行(),查询元)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第2912行,在
返回self.database.execute_sql(sql、params、self.require_commit)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第3775行,在execute_-sql中
self.commit()
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第3598行,在出口处__
重新发布(新类型,新类型(*exc_参数),回溯)
文件“/Users/conduce-laptop/anaconda2/lib/python2.7/site-packages/peewee.py”,第3768行,在execute_-sql中
execute(sql、params或())
peewee.OperationalError:没有这样的表:项
我必须运行:Item.create\u table(fail\u静默=True)
而不是数据库。create\u tables(Item)
。显然,您只运行了一次(因为您不想重新创建表,所以错误地调用了create_表:
database.create_tables([Item], True)
True
允许您多次调用它而不会出错