如何使用sqlalchemy将初始数据加载到数据库中

时间:2013-07-04 03:07:01

标签: python django sqlalchemy

我希望能够在使用SQLAlchemy创建表时自动加载数据。

在django中,您有fixtures,可以在创建表时轻松地使用数据预先填充数据库。我觉得这很有用,特别是当你有基本的“查找”表时,例如product_type,student_type只包含几行甚至是一个像货币一样的表格,它们会加载世界上所有的货币而不必在销毁模型/类时反复键入它们。

我当前的应用程序没有使用django。我有SQLAlchemy。我怎样才能实现同样的目标?我希望应用程序知道数据库是第一次创建的,因此它会用数据填充一些表。

2 个答案:

答案 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可能对您有用,但工作流程不同。