无法在mysql表中的值中使用破折号(-)

问题描述 投票:0回答:2

我一直试图从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就是什么。

这是我的桌子的屏幕截图:enter image description here

+-------------+--------------+------+-----+---------+----------------+
| 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    |                |
+-------------+--------------+------+-----+---------+----------------+
mysql mariadb mysql-python mysql-connector
2个回答
0
投票

这里的问题是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


0
投票

似乎您的插入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代码吗?如果我们可以看到您的实际操作,则调试起来会容易得多。

© www.soinside.com 2019 - 2024. All rights reserved.