我正在将 SQLAlchemy Core 与 MySQL 数据库一起使用,但很难找到 INSERT IGNORE / DUPLICATE KEY UPDATE 的解决方案。如果有办法处理这个问题,我讨厌在代码中手动编写一次性查询。我发现的大多数解决方案或讨论都围绕 ORM,而不是核心。甚至其中一些是死链接。甚至有可能吗?
sha*_*aan 10
我知道现在有点晚了..但如果有人仍在寻找解决方案。
对于:关于重复密钥更新
ins = insert(/* table_name*/ ).values(/*your values(with PK)*/)
do_update_stmt = ins.on_duplicate_key_update(/*your values(with out PK)*/)
connection.execute(do_update_stmt)
Run Code Online (Sandbox Code Playgroud)
MySQL 支持的 INSERT 的 ON DUPLICATE KEY UPDATE 子句现在支持使用MySQL 特定版本的 Insert 对象
这不适用于sqlalchemy.insert().
对于:插入忽略
这有点hacky,但效果很好。
ins_address_stmt = insert(/* table_name*/ ).values(/*your values*/). \
prefix_with('IGNORE')
Run Code Online (Sandbox Code Playgroud)
MySQL 将抑制重复主键的错误并给出警告。
小智 5
shaktimaan 的回答非常适合 MySQL INSERT IGNORE。如果您发现此页面寻找 SQLite INSERT IGNORE,请记住执行 INSERT OR IGNORE
https://www.sqlite.org/lang_insert.html
stmt = insert(/* table_name*/ ).values(/*your values*/).prefix_with('OR IGNORE')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10824 次 |
| 最近记录: |