SQLAlchemy INSERT IGNORE
如何将多个数据记录插入表中而忽略重复项。我正在使用 SQLAlchemy。
谢谢!
您要查找的行为的 SQLite 语法:
1 2 | inserter = table_object.insert().prefix_with("OR REPLACE") inserter.execute([{'column1':'value1'}, {'column1':'value2'}]) |
要始终将
1 2 3 4 5 6 | from sqlalchemy.ext.compiler import compiles from sqlalchemy.sql.expression import Insert @compiles(Insert) def _prefix_insert_with_ignore(insert, compiler, **kw): return compiler.visit_insert(insert.prefix_with('OR IGNORE'), **kw) |
或者只是临时这样做,手动调用
1 2 3 4 5 6 7 8 9 10 11 | from sqlalchemy.ext.compiler import compiles, deregister from sqlalchemy.sql.expression import Insert def _prefix_insert_with_ignore(insert, compiler, **kw): return compiler.visit_insert(insert.prefix_with('OR IGNORE'), **kw) compiles(Insert)(_prefix_insert_with_replace) try: # do some inserts... finally: deregister(Insert) |
这确实让人觉得很奇怪,因为它仍然是一个全局更改,但只要你不使用线程并确保在