【发布时间】:2015-02-06 16:37:06
【问题描述】:
SQLAlchemy 为定义数据库表提供了一个非常干净的接口:
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
user = Table('user', metadata,
Column('user_id', Integer, primary_key = True),
Column('user_name', String(16), nullable = False),
Column('email_address', String(60), key='email'),
Column('password', String(20), nullable = False)
)
user_prefs = Table('user_prefs', metadata,
Column('pref_id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey("user.user_id"), nullable=False),
Column('pref_name', String(40), nullable=False),
Column('pref_value', String(100))
)
一旦定义了这些表,就很容易使用metadata.create_all(engine) 函数创建这些表。当您想要创建不会干扰生产中使用的现有表的表时,这对于测试特别有用。
我目前从事的一个项目在很大程度上依赖于 postgres 中的用户定义函数。是否有一种干净的方法可以使用 SQLAlchemy 定义这些函数,以便 metadata.create_all(engine) 正确创建函数以及相应的表?
【问题讨论】:
标签: python postgresql sqlalchemy