0
サニティチェックの一環として、各カラムにdefault
値または機能があるかどうかをチェックしたいと思います。テーブルを作成すると、table.columns
default
という属性からアクセスできます。リフレクション後のカラムの `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)
出力:
id None
value ColumnDefault(42)
`reattaching using reflection`
id None
value None
'default'はPythonのデフォルトです。 'server_default'が必要です。 – univerio
@univerio、あなたのコメントを回答にすると、私はそれを受け入れます。 – Framester