我想过滤数据库插入,以避免重复,所以它只插入一个产品每1 ProductId
. 我该怎么做?这是我的插页:
add_data = ("INSERT INTO productdetails"
"(productId, productUrl, discount, evaluateScore, volume, packageType, lotNum, validTime, storeName, storeUrl, allImageUrls, description) "
"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)")
这就是它的样子,但是在pymysql中,如何在mysql.connector中执行相同的操作?
INSERT INTO producttable (productId, productTitle, salePrice, originalPrice )
SELECT * FROM (SELECT %(productId)s, %(productTitle)s, %(salePrice)s, %(originalPrice)s) AS tmp
WHERE NOT EXISTS (
SELECT productId FROM producttable WHERE productId = %(productId)s
)
LIMIT 1;
3条答案
按热度按时间6l7fqoea1#
将列设置为唯一。然后使用insert ignore语句,如果存在重复条目,查询将不会执行。您可以在这里阅读有关插入忽略的更多信息。
oug3syen2#
正确的方法是在数据库端。需要添加唯一约束:
你可以比简单地做插入,没有任何地方或如果。
为什么?如果您按照yayati的建议保留一个集合,那么您将通过将集合及其周围的处理作为瓶颈来限制自己。
如果添加了约束,那么即使有数百万行,也会让数据库快速检查唯一性。如果db不是唯一的,则会返回错误。
mfpqipee3#
您可以通过中的字符串插值创建insert语句,并将它们添加到一个集合中。集合集合本身只保留唯一的字符串。然后,可以将一组唯一的sql insert语句批量加载到rdbms中。