python - 如何从表 args 为 mssql 方言关闭自动增量
问题描述
是否可以使用 table args 关闭自动增量,或者只能从 args 中完成Column()
?我正在从 pandas 进行批量插入,而 sqlalchemy 对我咆哮说不允许身份插入,而实际上我不想在此表上使用自动增量。
我在想可能有一个 mssql 方言选项可以作为 qwarg 使用,所以我也尝试了 mssql_identity=False 但我得到一个参数错误,msslq 不接受。
class PeopleTb(SqlAlchemyBase):
__tablename__ = 'people_tb'
PeopleID = sa.Column(sa.Integer, nullable=False)
PeopleName = sa.Column(sa.Integer)
__table_args__ = (
sa.PrimaryKeyConstraint(PeopleID, name="people_tb_pk", autoincrement=False),
{"schema": "ods"},
)
解决方案
您可以在调用之前立即启用 IDENTITY_INSERT to_sql()
:
Base = declarative_base()
class PeopleTb(Base):
__tablename__ = "people_tb"
PeopleID = sa.Column(sa.Integer, primary_key=True)
PeopleName = sa.Column(sa.Integer)
Base.metadata.drop_all(engine) # for
Base.metadata.create_all(engine) # testing
df = pd.DataFrame([(1, 123)], columns=["PeopleID", "PeopleName"])
with engine.begin() as conn:
conn.exec_driver_sql("SET IDENTITY_INSERT people_tb ON")
df.to_sql("people_tb", conn, index=False, if_exists="append")
推荐阅读
- c++ - 在尝试使用 Windows 编译 lua 以使用 emscripten 时遇到障碍,“无法找到 ar rcu”
- python - 使用 unittest 在多输入函数中模拟 Python 输入
- angular - 角度 mdc-select 不应用全宽
- r - 包 withr 不可用(R 版本 4.0.2)
- capacitor - Ionic 5 + 带有华为 HMS 的电容器
- r - 在 R 中排列行,以使年份列按自定义顺序排列,并将具有相同条目的其他列分组
- machine-learning - 通过多重预处理点燃 ML
- c# - 测试项目不引用任何 .NET Nuget 适配器
- python - 如果 A 行中的字符串包含 B 行元素,则 Pandas 过滤器
- mysql - 如何在 MySQL 中查找重复记录,但有一定程度的差异?