我希望能够在使用SQLAlchemy创建表时自动加载数据。
在django中,您有fixtures,可以在创建表时轻松地使用数据预先填充数据库。我觉得这很有用,特别是当你有基本的“查找”表时,例如product_type,student_type只包含几行甚至是一个像货币一样的表格,它们会加载世界上所有的货币而不必在销毁模型/类时反复键入它们。
我当前的应用程序没有使用django。我有SQLAlchemy。我怎样才能实现同样的目标?我希望应用程序知道数据库是第一次创建的,因此它会用数据填充一些表。
答案 0 :(得分:3)
我使用事件监听器在创建表时用数据预填充数据库。
假设您的代码中有ProductType
个模型:
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)
答案 1 :(得分:1)
简短的回答是否定的,SQLAlchemy没有提供与Django这样的dumpdata和loaddata相同的功能。
https://github.com/kvesteri/sqlalchemy-fixtures可能对您有用,但工作流程不同。