gpt4 book ai didi

python - 使用 LAST_INSERT_ID() 将最后创建的 auto_increment 值插入到表中

转载 作者:行者123 更新时间:2023-11-29 05:48:23 24 4
gpt4 key购买 nike

我有一张区域表,里面可能有很多区。创建表时,我已将区域的 ID 设置为自动递增。

我已经尝试了使用 LAST_INSERT_ID() 在 Internet 上找到的所有解决方案,但都没有用。我收到 LAST_INSERT_ID() 未定义错误、语法不正确或不同步错误。

我正在使用 python 和 mysql

cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))


cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, %s)''',
(None, district1, SELECT LAST_INSERT_ID(),))

我需要将 area1_tb 中的 ID 链接到 district_tb 中的 area1_id,但我一直收到错误。

最佳答案

你非常接近。不要SELECT LAST_INSERT_ID()。只是使用它的值(value)。它是 MySQL 的 SQL 方言中的一个函数

试试这个:

cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))

cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, LAST_INSERT_ID())''',
(None, district1,))

而且,如果您想在单个区域中插入多个区域,请尝试将区域插入的 id 存储在 MySQL 变量中,以便您可以重用它:

cur.execute('''
INSERT IGNORE INTO area1_tb (
id,
area1
) VALUES (%s, %s)''',
(None, area1,))

cur.execute('SET @areaId := LAST_INSERT_ID()', Params=None)

cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district1,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district2,))
cur.execute('''INSERT IGNORE INTO district_tb (
id,
district1,
area1_id
) VALUES (%s, %s, @areaId)''',
(None, district3,))

后续插入会覆盖 LAST_INSERT_ID(),因此您需要保存它以便重新使用。

关于python - 使用 LAST_INSERT_ID() 将最后创建的 auto_increment 值插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57209478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com