【问题标题】:mysql insert duplicate values into tablemysql将重复值插入表中
【发布时间】:2014-07-29 16:22:57
【问题描述】:

我正在尝试使用 python 将值插入到 mysql 表中,我有一些值,但我不考虑是否重复键/不重复,但我希望插入每个值。

对于我的 mysql 编码,我应该对插入重复项进行哪些更改?

   for name,hobby in p: 
       print name,hobby

   cursor.execute(
   '''INSERT INTO Details (Names, Hobby)
      VALUES (%s, %s)''',
     (name,hobby))

我收到以下错误!

   IntegrityError: (1062, "Duplicate entry 'Leelal' for key 'PRIMARY'")

请帮助我将重复的值放入表中!

表架构:

Id | Names | Hobby

只要名称和爱好出现在列表中,有没有办法自动增加 ID?

【问题讨论】:

  • 请向我们展示您拥有的表架构,以及它拥有的键/索引。您无法既添加重复项又保留主键。

标签: python mysql sql


【解决方案1】:

如果表中的属性(列)是主键(或唯一的),则它永远不能接受重复项。只要您的主键(可能是 ID)没有重复项,您几乎可以插入重复项,例如,

ID   |   Name   |   Hobby  |
1        John       Play
2        John       Play
3        Steve      Running
4        Steve      Running

(确保将主键设置为自动递增。教程如下:http://www.w3schools.com/sql/sql_autoincrement.asp)。

CREATE TABLE Hobbies
(
ID int NOT NULL AUTO_INCREMENT,
Name varchar(255) NOT NULL,
Hobby varchar(255),
PRIMARY KEY (ID)
)

【讨论】:

  • 但是我需要增加 id 作为名称和爱好的存在,所以它会自动增加/我应该进行更改吗?
  • @user3886307 如果你的ID是主键,那么是的,你的ID会自动递增
  • @GravityM - 在 MySQL 中是这样吗?如果他们只将其设置为主键,它会自动递增吗?我怀疑他们需要执行 AUTO_INCREMENT。根据this 帖子,您似乎无法将其设为为您增加它的功能。
  • @user3886307 是的,ID 是整数类型,您应该设置自动增量。
  • 如何设置自动增量?
【解决方案2】:

我认为问题在于您的详细信息表有一个主键设置。为了插入重复项,您需要删除主键,或将其更改为足够独特以至于不被视为重复项。

看看你的表格创建脚本,我假设你有这样的东西

CREATE TABLE Persons
(
ID int NOT NULL,
Name varchar(255) NOT NULL,
Hobby varchar(255),
PRIMARY KEY (Name)
)

删除主键。

如果您想以 Id 作为主表,请创建类似这样的表

CREATE TABLE MyTable
(
ID INTEGER AUTO_INCREMENT PRIMARY KEY
Name varchar(255) NOT NULL,
Hobby varchar(255),
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多