相关疑难解决方法(0)

SQLAlchemy - INSERT OR REPLACE等效项

有谁知道SQLAlchemy中的SQL"INSERT OR REPLACE"子句及其SQL表达式语言的等价物是什么?

非常感谢 - honzas

python sqlalchemy

11
推荐指数
3
解决办法
2万
查看次数

如何使用SQLAlchemy有效地执行批量插入或更新?

我正在使用带有Postgres后端的SQLAlchemy进行批量插入或更新.为了提高性能,我试图每千行左右只提交一次:

trans = engine.begin()
  for i, rec in enumerate(records):
    if i % 1000 == 0:
      trans.commit()
      trans = engine.begin()
    try:
        inserter.execute(...)
    except sa.exceptions.SQLError:
        my_table.update(...).execute()
trans.commit()
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.似乎当INSERT失败时,它会使事物处于一种奇怪的状态,阻止UPDATE发生.它会自动回滚交易吗?如果是这样,可以停止吗?我不希望在发生问题时回滚整个事务,这就是为什么我首先尝试捕获异常.

我得到的错误消息BTW是"sqlalchemy.exc.InternalError:(InternalError)当前事务被中止,命令被忽略直到事务块结束",并且它发生在update().execute()调用上.

python sqlalchemy

8
推荐指数
1
解决办法
6797
查看次数

标签 统计

python ×2

sqlalchemy ×2