【发布时间】:2023-04-03 07:18:03
【问题描述】:
当我尝试使用 python 和 SQL 查询添加新订单及其详细信息时,我收到此错误消息 mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry '13' for key 'order_details.PRIMARY'。
完整的错误信息:
这是我的代码:
from datetime import datetime
from sql_connection import get_sql_connection
def insert_order(connection, order):
cursor = connection.cursor()
order_query = ("INSERT INTO orders "
"(customer_name, total, datetime)"
"VALUES (%s, %s, %s)")
order_data = (order['customer_name'], order['grand_total'], datetime.now())
cursor.execute(order_query, order_data)
order_id = cursor.lastrowid
order_details_query = ("INSERT INTO order_details "
"(order_id, product_id, quantity, total_price)"
"VALUES (%s, %s, %s, %s)")
order_details_data = []
for order_detail_record in order['order_details']:
order_details_data.append([
order_id,
int(order_detail_record['product_id']),
float(order_detail_record['quantity']),
float(order_detail_record['total_price'])
])
cursor.executemany(order_details_query, order_details_data)
connection.commit()
return order_id
if __name__ == '__main__':
connection = get_sql_connection()
print(insert_order(connection, {
'customer_name': 'dhaval',
'grand_total': '500',
'order_details': [
{
'product_id': 3,
'quantity': 2,
'total_price': 50
},
{
'product_id': 4,
'quantity': 1,
'total_price': 30
}
]
}))
【问题讨论】:
-
在
order_details中主键只有order_id所以不能复制,这是正常的