繁体   English   中英

如何正确使用字符串创建Python MySQL查询?

[英]How do I properly use strings to create a Python MySQL query?

我正在尝试使用Python编写MySQL查询,但是当我尝试执行它时,却不断收到语法错误#1064(42000)。 已获取数据,但该错误使查询无法完成。

    mysql.connector.errors.ProgrammingError: 1064
    (42000): You have an error in your SQL syntax; check
    the manual that corresponds to your MySQL server
    version for the right syntax to use near '1
'(data in address_line_1)' NULL '(data in city field)'
'(data in postal code field)' '(data in state code field)' 'US'
(latitude data) (longitude data) '(first two characters of is_active field data)' at line 1

它或多或少地告诉我错误在哪里,但不是导致错误的原因。 我认为我可能无法正确引用查询字符串中的内容。 我无法分辨出错误是什么,因为对我而言,查询似乎是正确的,而且我不知道Python MySQL能够诊断格式错误的所有特性。

这是表创建命令(此命令在花费数小时进行调整后才有效):

    sql=("CREATE TABLE IF NOT EXISTS `locations` ("
"   `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,"
"   `location_id` VARCHAR(48),"
"   `is_valid` BOOLEAN,"
"   `street_line_1` VARCHAR(48),"
"   `street_line_2` VARCHAR(48),"
"   `city` VARCHAR(16),"
"   `postal_code` VARCHAR(8),"
"   `state_code` CHAR(2),"
"   `country_code` CHAR(2),"
"   `latitude` DECIMAL(10,6),"
"   `longitude` DECIMAL(10,6),"
"   `accuracy` VARCHAR(12),"
"   `is_active` BOOLEAN,"
"   `is_commercial` BOOLEAN,"
"   `is_forwarder` BOOLEAN,"
"   `delivery_point` VARCHAR(18),"
"   `last_sale_date` DATE,"
"   `total_value` INT(12)"
")  ENGINE = InnoDB")

那不是自动递增的ID密钥的17个字段。 这是实际的插入查询:

    sql = ("INSERT INTO `locations`(`location_id`, `is_valid`, `street_line_1`,"
"   `street_line_2`, `city`, `postal_code`, `state_code`, `country_code`,"
"   `latitude`, `longitude`, `accuracy`, `is_active`, `is_commercial`,"
"   `is_forwarder`, `delivery_point`, `last_sale_date`, `total_value`)"
"   VALUES(%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s)")

我想念什么? 感谢您的帮助。

第一个建议是用逗号分隔%s

 sql = ("INSERT INTO `locations`(`location_id`, `is_valid`, `street_line_1`,"
"   `street_line_2`, `city`, `postal_code`, `state_code`, `country_code`,"
"   `latitude`, `longitude`, `accuracy`, `is_active`, `is_commercial`,"
"   `is_forwarder`, `delivery_point`, `last_sale_date`, `total_value`)"
"   VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)")

我想您的值将不包含“,”,因此VALUES(%s%s ....)不正确。 您需要改用VALUES(%s,%s,...)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM