【发布时间】:2017-12-04 17:12:07
【问题描述】:
当我尝试创建数据库中已存在的表时,如何避免 sqlalchemy orm 中的此异常:
sqlalchemy.exc.InvalidRequestError:表 'col1' 已为此 MetaData 实例定义。指定 'extend_existing=True' 以重新定义现有 Table 对象上的选项和列。
Base = automap_base()
Base.prepare(engine, reflect=True)
class Col1(Base):
__tablename__ = 'col1'
id = Column(Integer(), primary_key=True)
name = Column(String())
Base.metadata.create_all(engine)
【问题讨论】:
-
发生这种情况是因为您在同一个
MetaData实例中声明一个同名的表,而不是因为您要创建一个表同一个数据库中的同名。在同一个MetaData实例中有一个同名的表,因为您正在反映数据库中的表,并且数据库中有一个同名的表。如果您已经从数据库中反映了新表,为什么还要声明它?如果你只是想要一个 ORM 类,也许automap 会有所帮助。 -
我正在声明一个新表 bcz 我不确定它是否存在。
标签: python sqlalchemy