我有一个现有的数据库。该数据库通过Django应用程序进行管理。 在Flask应用程序中,使用相同的数据库通过Sqlalchemy模型填充 automap_base :
db = SQLAlchemy(app)
Base = automap_base()
engine = create_engine('postgresql+psycopg2://user@localhost/database')
Base.prepare(db.engine, reflect=True)
现在我正在尝试设置测试数据库,该数据库将使用相同的 Base 对象创建:
test_engine =create_engine('postgresql+psycopg2://user@localhost/test-database')
Base.metadata.create_all(test_engine)
因此,Sqlalchemy创建表和索引:
2014-12-17 16:23:18,499 INFO sqlalchemy.engine.base.Engine CREATE UNIQUE INDEX core_city_name_key ON core_city (name)
2014-12-17 16:23:18,499 INFO sqlalchemy.engine.base.Engine {}
2014-12-17 16:23:18,501 INFO sqlalchemy.engine.base.Engine COMMIT
2014-12-17 16:23:18,502 INFO sqlalchemy.engine.base.Engine CREATE UNIQUE INDEX core_city_name_key ON core_city (name)
2014-12-17 16:23:18,502 INFO sqlalchemy.engine.base.Engine {}
2014-12-17 16:23:18,503 INFO sqlalchemy.engine.base.Engine ROLLBACK
您可以看到索引创建已执行两次并影响错误:
ProgrammingError: (ProgrammingError) relation "core_city_name_key" already exists
我做错了什么?