2
Um die User
Tabelle zu erstellen, muss ich drop_all
und dann create_all
Methoden verwenden. Diese beiden Funktionen initiieren jedoch eine ganze Datenbank neu. Ich frage mich, ob es eine Möglichkeit gibt, die User
Tabelle zu erstellen, ohne vorhandene Tabellen in einer Datenbank zu löschen (oder zu löschen)?So erstellen Sie eine einzelne Tabelle mit SqlAlchemy deklarative_base
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String)
def __init__(self, code=None, *args, **kwargs):
self.name = name
url = 'postgresql+psycopg2://user:[email protected]/my_db'
engine = sqlalchemy.create_engine(url)
session = sqlalchemy.orm.scoped_session(sqlalchemy.orm.sessionmaker())
session.configure(bind=engine, autoflush=False, expire_on_commit=False)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
Warum wollen Sie "müssen" ausführen 'drop_all' vor' create_all'? Wenn keine anderen Probleme auftreten, sollte 'create_all' in Ordnung sein. Und Sie können sich generell für Alambic und Migrationen interessieren. –
[MetaData.drop_all() '] (http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData.drop_all) löscht alle in diesen Metadaten gespeicherten Tabellen, nicht alle in DB. –