Python 当存在重复条目时,使用SQLAlchemy/SQLite3高效插入多行
我使用SQLAlchemy将多行插入到SQLite3表中,通常这些条目已经在表中了。一次插入一行非常慢,如果行已经存在,则捕获异常并继续。有没有一种有效的方法可以做到这一点?如果行已经存在,我不想做任何事情。您可以使用SQL语句Python 当存在重复条目时,使用SQLAlchemy/SQLite3高效插入多行,python,sqlite,sqlalchemy,Python,Sqlite,Sqlalchemy,我使用SQLAlchemy将多行插入到SQLite3表中,通常这些条目已经在表中了。一次插入一行非常慢,如果行已经存在,则捕获异常并继续。有没有一种有效的方法可以做到这一点?如果行已经存在,我不想做任何事情。您可以使用SQL语句 INSERT OR IGNORE INTO ... etc. ... 如果插入是重复的,则忽略它。了解忽略冲突子句 也许您可以在SQLAlchemy中使用或IGNORE作为前缀Insert——关于如何在SQL语句中Insert和INTO之间放置或IGNORE的文档是如
INSERT OR IGNORE INTO ... etc. ...
如果插入是重复的,则忽略它。了解忽略
冲突子句
也许您可以在SQLAlchemy中使用
或IGNORE
作为前缀Insert
——关于如何在SQL语句中Insert
和INTO
之间放置或IGNORE
的文档是如果您愿意运行“本机”sqlite SQL,您可以执行以下操作:
REPLACE INTO my_table(id, col2, ..) VALUES (1, 'value', ...);
REPLACE INTO my_table(...);
...
COMMIT
但是,这不会在所有DBMS中都是可移植的,因此在一般的sqlalchemy方言中找不到它
您可以做的另一件事是使用SQLAlchemy ORM,定义一个“域模型”——一个映射到数据库表的python类。然后,您可以创建域类的多个实例并调用会话。在每个要插入(或忽略)的项上保存\u或\u更新(域\u对象),并在要将项插入(或忽略)到数据库表时,最后调用session.commit()
这个问题看起来像是重复的你能发布一个代码示例吗?我想看看你到底想达到什么目的。谢谢