反射后访问列的`default`属性

时间:2016-08-08 17:40:18

标签: sql sqlalchemy

作为完整性检查的一部分,我想检查每列是否带有t(combn(sample(z), 3)) 值或函数。创建表格后,我可以通过default table.columns属性访问此信息。

目前我使用“反射”访问/重新连接现有表。

但是当我尝试访问列的default属性时,在使用反射后,default属性设置为default

None

输出:

from sqlalchemy import Table, Column, Integer, MetaData, create_engine
engine = create_engine(postgresql+psycopg2://XXX)
metadata = MetaData(engine)

table_name ='test'
table = Table(table_name, metadata,
Column('id', Integer,  primary_key=True),
Column('value', Integer, default=42))
table.create(engine)
for c in table.columns:
    print c.name, repr(c.default)

print '`reattaching using reflection`'
metadata = MetaData(engine)
metadata.reflect()
table_reloaded = metadata.tables[table_name]
for c in table_reloaded.columns:
    print c.name, repr(c.default)

1 个答案:

答案 0 :(得分:1)

default是Python级别的默认值。 SQLAlchemy反射将数据库列的默认值设置为server_default

for c in table_reloaded.columns:
    print c.name, repr(c.server_default)