Python:MySQL批量插入,跳过外键约束失败的条目

标签 python mysql sql batch-file

我设计了一个带有外键约束的大型数据库,以防止插入损坏的数据,这违反了这些约束。我希望,当我使用 Python 插入数据时,它会跳过外键约束失败的每个条目,以便仅将“真实”数据插入数据库中。有点像过滤器。但是,只要出现“损坏”条目,脚本就会停止。有没有办法强制他继续并跳过不需要的行?

感谢您的帮助!

最佳答案

您可以使用INSERT INTO ... SELECT ... 进行条件插入。举个例子:有两个表countrycitycity中的列country_id引用了相应的来自国家的专栏。

  • 国家/地区(country_id,名称)
  • 城市(city_id、名称、country_id)

以下 INSERT 语句无条件插入条目。如果 country 中不存在值为 :country_id 的行,则会失败。

INSERT INTO city (city_id, name, country_id)
          VALUES (:city_id, :name, :country_id);

如果国家中存在相应的行,则以下语句仅插入条目。否则,什么也不会发生。

INSERT INTO city (city_id, name, country_id)
       SELECT :city_id, :name, :country_id
       FROM country
       WHERE country_id=:country_id;

关于Python:MySQL批量插入,跳过外键约束失败的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19334585/

相关文章:

mysql - 在线sql查询

sql - Snowflake 或 Azure 数据工厂中的转换?

python - 理解 FeatureUnion (pandas) 工作的困惑

python - Pandas - 获取字符串中的列表 df 列名称(例如)

python - 一个循环? Python

CREATE TABLE 语句中的 MySQL 语法错误

sql - 使用sql hive比较两列中的值并在条件基础上返回值

python - Pygame表面突然反转变量

MySQL - 如何从 10 个表中获取信息

php - 我需要帮助创建一个 php 脚本,该脚本将使用 html 表单过滤并显示 mysql 数据库的结果