python Cant use dash(-)in value in MySQL table [duplicate]

oipij1gg  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(109)

此问题在此处已有答案

How to use variables in SQL statement in Python?(5个答案)
两年前关闭了。
我一直在尝试从python向MYSQL表中插入数据。我的SQL表中的字段是id,token,start_time,end_time和no_of_trans.我想在token列中存储使用uuid4生成的token。但是由于值包含(-),我得到了这个错误:mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column '3900af75' in 'field list''其中生成的令牌为:3900af75-4563-4c05-81ba-b0f1630abecc
我也尝试过以字符串格式插入日期,但也不起作用。所以我显式地将日期值作为字符串传递: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))
它将数据插入表中,但日期被视为整数,存储的值是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    |                |
+-------------+--------------+------+-----+---------+----------------+
rkue9o1l

rkue9o1l1#

在传递字符串时,VALUES部分中除了最后一个%s之外的所有字符都需要用单引号括起来。例如,如果没有引号,2020-04-20就变成了1996。
但实际的问题似乎是第一个未加引号的%s,这样您的兰德_token变量值就被解释为
3900af75 - 4563 - 4c05 - 81ba - b0f1630abecc
所以“列3900 af 75的值减去文字数4563减去名称为4c 05的列...”

相关问题