Als Teil einer Plausibilitätsprüfung möchte ich prüfen, ob jede Spalte einen default
Wert oder eine Funktion enthält. Wenn ich die Tabelle erstelle, kann ich auf diese Information durch table.columns
default
Attribut zugreifen.Zugriff auf das `default` Attribut der Spalte nach der Reflektion
Im Moment benutze ich "reflection" um auf existierende Tabellen zuzugreifen bzw. diese wieder zu verbinden.
Wenn ich jedoch versuche, auf das Attribut default
der Spalten zuzugreifen, wird das Attribut default
nach der Verwendung der Reflexion auf None
gesetzt.
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)
Ausgang:
id None
value ColumnDefault(42)
`reattaching using reflection`
id None
value None
'default' ist der Python-Standard. Du willst 'server_default'. – univerio
@univerio, Wenn Sie Ihren Kommentar in eine Antwort verwandeln, werde ich es akzeptieren. – Framester