2017-07-22 5 views
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) 
+4

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. –

+0

[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. –

Antwort

Verwandte Themen