繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM