2010-11-12 27 views
2

Je viens de passer à Pylons 1.0 et SqlAlchemy 0.6.5. Ce qui était un processus simple de création du schéma de base de données ne fonctionne plus.La création de la table échoue avec SqlAlchemy et Pylons

J'ai un modèle simple:

Base = declarative_base() 

class User(Base): 
    __tablename__ = 'user' 

    id = Column(Integer, primary_key=True) 
    user_name = Column(String) 

    def __init__(self, userName): 
     self.userName = userName 

    def __repr__(self): 
     return "<User('%s')>" % (self.userName) 

Quand je lance

paster setup-app development.ini 

le fichier de base de données est créée (sqlite3), mais pas la table, et aucune erreur sont retournés.

Logging montre que les lignes suivantes dans websetup.py n'exécutent:

log.info("Creating schema...") 
Base.metadata.create_all(bind = Session.bind, checkfirst = True) 
log.info("Database successfully set up.") 

Qu'est-ce que je manque?

Modifier: La poursuite de l'exploration indique que le dictionnaire Base.metadata.tables est vide. Alors, pourquoi le modèle n'est-il pas reflété dans les métadonnées?

Répondre

0

Ok, j'ai trouvé le problème.

Dans model.meta.py, Base = declarative_base() a déjà été réalisée. Lorsque j'ai également ajouté cette instruction au model.__init__.py, il est évident qu'il crée une nouvelle instance sans les métadonnées, donc il n'y avait pas de tables à créer. Je ne sais pas exactement pourquoi/comment cela fonctionne, donc si quelqu'un (Mike Bayer?) A des détails, j'aimerais savoir.