我读过不少资源(AO。1,2),但我无法得到PostgreSQL关于冲突忽略行为SQLAlchemy的工作。
我已经以这个公认的答案为基础,但是它给出了
SAWarning: Can't validate argument 'append_string'; can't locate any SQLAlchemy dialect named 'append'
我尝试将Postgresql方言添加到@compile子句中,重命名我的对象,但是它不起作用。我也尝试使用str(insert())+ " ON CONFILCT IGNORE"
没有结果。(顺便说一句)
我怎样才能将On CONFLICT IGNORE
其添加到我的插入物中?我喜欢提出的解决方案,因为我发现自己不希望IGNORE
每个行为都如此INSERT
ps。使用python 2.7(不要介意升级到3.4 / 3.5),最新的sqlalchemy(1.x)
您不需要这个,使用exist条件防止插入重复项。
例如:
INSERT INTO table (unique_name)
SELECT 'some_string'
WHERE NOT EXISTS(SELECT 1 FROM table WHERE unique_name = 'some_string')
你也可以
INSERT INTO table (unique_name)
VALUES('some_string')
ON CONFLICT (unique_name) DO NOTHING
但是,如果您需要在单个查询中插入或更新,那么以下示例适用于您:
INSERT INTO distributors (did, dname)
VALUES (5, 'Gizmo Transglobal'), (6, 'Associated Computing, Inc')
ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;
这是PostgreSQL文档中的一个例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句