Jef*_*ian 3 python sqlalchemy flask
我有一个简单的问题。当我运行 Flask 应用程序时,我想直接向数据库添加初始值,如下所示:
if __name__ == '__main__':
db.init_app(app)
with app.app_context():
db.create_all()
user = UserModel.find_by_name('user')
if not user:
user = UserModel('name', 'password')
user.save_to_db()
app.run()
Run Code Online (Sandbox Code Playgroud)
这样做会给我带来以下错误:
if __name__ == '__main__':
db.init_app(app)
with app.app_context():
db.create_all()
user = UserModel.find_by_name('user')
if not user:
user = UserModel('name', 'password')
user.save_to_db()
app.run()
Run Code Online (Sandbox Code Playgroud)
有什么想法如何解决这个问题吗?
首次创建表时向表添加数据的正确方法如下
from sqlalchemy import event
# import your initialized db
from app import db
class Department(db.Model):
__tablename__ = 'department'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(64), index=True)
@event.listens_for(Department.__table__, 'after_create')
def create_departments(*args, **kwargs):
db.session.add(Department(name='Customer Service', email='abc@domain.com'))
db.session.add(Department(name='IT', email='def@domain.com'))
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
第一次db.create_all()在您的配置设置序列中运行时,它将创建您的数据库架构,并触发该create_departments函数以使用您想要的数据填充表。