2

データベース スキーマを作成し、SQLalchemy でデータを挿入したいと考えています。しかし、何らかの理由で SQLAlchemy はスキーマを適用しませんcreate_fixture.py。セッションをコミットすると、テーブルが見つからないため、SQLAlchemy でエラーが発生します。

ここに私のコードの簡略版があります。私の__init__.py

  from sqlalchemy import create_engine                                                           
  from sqlalchemy.orm import sessionmaker, scoped_session                                        
  from sqlalchemy.ext.declarative import declarative_base                                        

  engine = create_engine('postgresql://postgres@localhost/syncer', echo=True)                    
  Base = declarative_base(bind=engine)                                                           
  session = scoped_session(sessionmaker(engine))        

entity.py:

  from sqlalchemy import Column, String, Integer                                                                            
  from __init__ import Base, session    


  class Zone(Base):                                                               
         __tablename__ = 'zone'                                                      

         id = Column(Integer, primary_key=True)                                      
         name = Column(String(50))  

create_fixture.py

 from __init__ import Base, session                                                                                
 from entity import Zone                                                                           
 from sqlalchemy import create_engine                                                         

 Base.metadata.create_all() 
 zone = Zone('zone_1')
 session.add(zone)
 session.commit()

出力

   2013-09-13 20:06:12,340 INFO sqlalchemy.engine.base.Engine select version()
    2013-09-13 20:06:12,341 INFO sqlalchemy.engine.base.Engine {}
    2013-09-13 20:06:12,345 INFO sqlalchemy.engine.base.Engine select current_schema()
    2013-09-13 20:06:12,345 INFO sqlalchemy.engine.base.Engine {}
    2013-09-13 20:06:12,352 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
    2013-09-13 20:06:12,354 INFO sqlalchemy.engine.base.Engine INSERT INTO zone (name) VALUES (%(name)s) RETURNING zone.id
    2013-09-13 20:06:12,354 INFO sqlalchemy.engine.base.Engine {'name': 'zone_1'}
    2013-09-13 20:06:12,356 INFO sqlalchemy.engine.base.Engine ROLLBACK

    sqlalchemy.exc.ProgrammingError: (ProgrammingError) relation "zone" does not exist
    LINE 1: INSERT INTO zone (name) VALUES ('zone_1') RETURNING zone.id

SQLAlchemy が私のスキーマに適用されないのはなぜですか? スキーマが適用されるように修正するにはどうすればよいですか?

4

0 に答える 0