[英]How can I load initial data into a database using sqlalchemy
我希望能够在使用SQLAlchemy创建表时自动加载数据。
在django中,您具有固定装置 ,可让您在创建表时轻松地用数据预填充数据库。 我发现这特别有用,尤其是当您具有基本的“查找”表(例如product_type,student_type仅包含几行或什至是货币的表)时,这些表将加载世界上所有的货币,而无需在输入时一遍又一遍地键入您破坏了模型/类。
我当前的应用程序未使用django。 我有SQLAlchemy。 我怎样才能达成同一目标? 我希望应用程序知道数据库是第一次创建的,因此它用数据填充了一些表。
我使用事件侦听器在创建表时用数据预填充数据库。
假设您的代码中包含ProductType
模型:
from sqlalchemy import event, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class ProductType(Base):
__tablename__ = 'product_type'
id = Column(Integer, primary_key=True)
name = Column(String(100))
首先,您需要定义一个回调函数,该函数将在创建表时执行:
def insert_data(target, connection, **kw):
connection.execute(target.insert(), {'id': 1, 'name':'spam'}, {'id':2, 'name': 'eggs'})
然后,您只需添加事件监听器:
event.listen(ProductType.__table__, 'after_create', insert_data)
简短的答案是“否”,SQLAlchemy没有提供与dumpdata和loaddata一样的功能,例如Django。
有https://github.com/kvesteri/sqlalchemy-fixtures可能对您有用,但工作流程有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.