
[英]What is the most efficient way to select a preexisting model in tensorflow
[英]What is the way to map preexisting tables in MSSQL with SQLalchemy
我正在使用 SQLAlchemy 连接 MSSQL 数据库,然后我想映射一个预先存在的表并使用 ORM 对其进行条目。 我想使用映射方法而不是创建自己的类有几个原因,但主要的原因是我需要存储 XML 文件,而 SQLAlchemy 不适合 MSSQL 提供的 XML 类型。
以下是我尝试过的内容以及为什么不起作用的描述:
我正在建立与数据库的连接,并以这种方式映射表:
engine = create_engine(conn_str, echo=True)
Base= declarative_base()
class MyClass(Base):
__table__ = Table('my_table_name', Base.metadata, autoload=True, autoload_with=engine)
执行时抛出异常:
sqlalchemy.exc.ArgumentError: Mapper mapped class MyClass->my_table_name could not assemble any primary key columns for mapped table 'my_table_name'
在 Microsoft SSMS 应用程序中检查表时,任何奇怪的列中都没有“PRIMARY KEY”。 我检查了每一列,发现“Id”列是 IDENTITY 列,我猜这是用作 PK。
我在 google 和 stackoverflow 中阅读了一些文章,发现我可以使用映射器参数以这种方式设置primary_key :
class MyClass(Base):
__table__ = Table('my_table_name', Base.metadata, autoload=True, autoload_with=engine)
__mapper_args__ = {
'primary_key':[Table('my_table_name', Base.metadata, autoload=True, autoload_with=engine).c.Id,]
}
这工作正常,执行代码时也不例外。 我尝试使用新的映射类对表进行输入:
new_entry = MyClass(
Id = 9999,
... all other not null objects
)
Session = sessionmaker(bind=engine)
session = Session()
session.add(new_entry)
session.commit()
session.close()
我收到以下异常:
Cannot insert explicit value for identity column in table 'my_table_name' when
IDENTITY_INSERT is set to OFF. (544) (SQLExecDirectW)")
我从 new_entry 中删除了“Id”列,但无论我填充或删除了哪些列,仍然会出现相同的错误。 任何想法我在这里做错了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.