2
Pour créer le tableau User
, je dois utiliser les méthodes drop_all
puis create_all
. Mais ces deux fonctions ré-initialisent une base de données entière. Je me demande s'il existe un moyen de créer la table User
sans effacer (ou supprimer) les tables existantes dans une base de données?Comment créer une table unique à l'aide de SqlAlchemy declarative_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)
Pourquoi avez-vous "devez" exécuter '' drop_all' avant create_all'? S'il n'y a pas d'autres problèmes, 'create_all' devrait être bon. Et vous pouvez généralement vous intéresser à l'alambic et aux migrations. –
['MetaData.drop_all()' (http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData.drop_all) supprime toutes les tables stockées dans les métadonnées, pas toutes dans DB. –