仅使用 sqlalchemy core 我希望定义表,以便每次将数据保存在表中时,数据都会转换为标题大小写。如何在表定义级别完成此操作?现在定义表的方式是:
roles = Table("roles", metadata,
Column("id", Integer, primary_key=True),
Column("name", String, unique=True, default=mycase, onupdate=mycase))
在上面,我总是希望将数据保存为'项目经理'即使用户输入的数据为“项目管理员”。或者'项目经理'这样可以避免在保存数据之前在代码中进行格式化。使用的数据库是postgresql 9.4。
我已经使用了这里提到的Sqlalchemy core 1.2的这个功能: http://docs.sqlalchemy.org/en/latest/core/defaults.html
# a function which counts upwards
i = 0
def mydefault():
global i
i += 1
return i
t = Table("mytable", meta,
Column('id', Integer, primary_key=True, default=mydefault),
)
但似乎没有使用sqlalchemy core 1.0.8:
def mycase(context):
return context.title()
roles = Table("roles", metadata,
Column("id", Integer, primary_key=True),
Column("name", String, unique=True, default=mycase, onupdate=mycase))