Meine Infrastruktur besteht aus 2 Docker-Containern: postgres db (mit user/pass/dbname-Parametern, die mit env in docker-compose.yml konfiguriert sind) und einer einfachen Flask-App mit Formular, was einen neuen Datensatz in der Tabelle erstellt. Es funktioniert, wenn die Tabelle manuell erstellt wurde. Ich muss die if_exists-Tabelle beim App-Start überprüfen und erstellen, wenn sie "false" sendet, aber die Standard-Create-Funktion auf sqlalchemy create table öffentlich, nicht in der Engine-Datenbank.
Ich habe engine.execute("\c dbname") versucht, aber es funktioniert nicht.
Lösung des Problems
Dies ist meine Antwort:
conn = engine.connect()
metadata = MetaData(engine)
exist=sqlalchemy.inspect(engine).has_table("Products")
if exist == False:
print("=Table doesn't exist=")
products = Table('products', metadata,
Column('id', Integer(), primary_key=True),
Column('product', String(200), nullable=False),
Column('price', Integer())
)
metadata.create_all(engine)
print("=Table was created=")
else:
print("=Table exists=")
logging.info('Table exists')
Keine Kommentare:
Kommentar veröffentlichen