我一直试图从python向MYSQL表插入数据。我的sql表中的字段是id,token,start_time,end_time和no_of_trans。我想在令牌列中存储使用uuid4
生成的令牌。但是由于该值包含(-)
,因此出现此错误:mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column '3900af75' in 'field list''
生成的令牌为:3900af75-4563-4c05-81ba-b0f1630abecc
而且我也尝试过以字符串格式插入日期,但这也不起作用。所以我显式地将日期值作为字符串传递:mycursor.execute("""INSERT INTO generate (12, start_time, end_time, no_of_trans) VALUES (%s, %s, %s, %s)""" %(rand_token, '2020-04-20', '2020-04-20', 3))
[将数据插入表中但将日期视为整数,并且存储的值是1996
,从我经过的日期算起2020-04
就是什么。
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| token | varchar(255) | YES | | NULL | |
| start_time | varchar(255) | YES | | NULL | |
| end_time | varchar(255) | YES | | NULL | |
| no_of_trans | int(20) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
这里的问题是uuid
类型的UUID。在尝试绑定字符串之前,请先尝试将其转换为字符串:
sql = """INSERT INTO generate (uuid, start_time, end_time, no_of_trans)
VALUES (%s, %s, %s, %s)"""
mycursor.execute(sql%(str(rand_token), '2020-04-20', '2020-04-20', 3))
还请注意,我假设UUID字符串的目标列称为uuid
。
似乎您的插入SQL语句中有错误。您应该在第一组括号中具有列名,然后在第二组括号中具有值。
mycursor.execute("""INSERT INTO generate (token, start_time, end_time, no_of_trans)
VALUES (%s, %s, %s, %s)""" %(rand_token, '2020-04-20', '2020-04-20', 3))
这也可能会导致您在第一段中提到的错误,因为它似乎正在尝试查找具有令牌第一部分名称的列。您可以共享当前的python代码吗?如果我们可以看到您的实际操作,则调试起来会容易得多。