在使用MySQL进行批量保存数据时,有时会碰到“mysql 批量保存 uid 没有生成”的问题。这个问题通常出现在批量插入数据时,由于某种原因导致自增主键没有按照预期生成。

造成这个问题的原因可能有很多,比如插入数据时未指定自增主键的值、主键冲突等。下面我们来介绍一种常见的解决方法。

通常情况下,我们在插入数据时会使用类似以下的SQL语句:

INSERT INTO table_name (col1, col2) VALUES (val1, val2), (val3, val4), ...

如果我们在插入数据时遇到了“mysql 批量保存 uid 没有生成”的问题,可以尝试使用以下方法:

  1. 在插入数据时,不指定自增主键的值,让MySQL自动生成。这样可以避免主键冲突的问题。

  2. 在插入数据后,通过MySQL的LAST_INSERT_ID()函数获取最后插入的自增主键的值。

下面是一个示例代码,演示了如何使用Python和MySQL进行批量保存数据,并获取自动生成的自增主键值:

import mysql.connector

# 连接MySQL数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password",
  database="mydatabase"
)

mycursor = mydb.cursor()

# 插入数据
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
  ('John', 'Highway 21'),
  ('Peter', 'Lowstreet 4'),
  ('Amy', 'Apple st 652'),
  ('Hannah', 'Mountain 21'),
  ('Michael', 'Valley 345'),
  ('Sandy', 'Ocean blvd 2'),
  ('Betty', 'Green Grass 1'),
  ('Richard', 'Sky st 331'),
  ('Susan', 'One way 98'),
  ('Vicky', 'Yellow Garden 2'),
  ('Ben', 'Park Lane 38'),
  ('William', 'Central st 954'),
  ('Chuck', 'Main Road 989'),
  ('Viola', 'Sideway 1633')
]

mycursor.executemany(sql, val)

mydb.commit()

# 获取最后插入的自增主键的值
print("最后插入的自增主键的值为:", mycursor.lastrowid)

在上面的示例代码中,我们首先连接到MySQL数据库,然后插入了一批数据到表customers中。最后,通过mycursor.lastrowid获取了最后插入的自增主键的值。

通过这种方法,我们可以避免“mysql 批量保存 uid 没有生成”的问题,确保数据插入操作的顺利进行。

总的来说,当在MySQL中进行批量保存数据时遇到问题时,我们可以尝试不指定自增主键的值,让MySQL自动生成,并通过LAST_INSERT_ID()函数获取插入的自增主键值来解决该问题。这样可以确保数据的完整性和准确性。

希望本文对您有所帮助,谢谢阅读!