使用 python.mysql 连接器插入数据失败

Failed to insert the data using python.mysql connector

我刚开始使用 python 的 MySQL 连接器,我将下面给出的数据插入到名为 "region_based_billings" 的 table 中。我尝试了所有可能的方法来插入此数据,但似乎我缺少一种语法,不确定确切的位置和数据类型? .

   date  = '2016-06-29'
   region = 'Asia Pacific'
   account_type = 'PRODUCTION ACCOUNT'
   product_type  = 'AmazonEC2'
   total= 10.58383305
   count = 21

   cursor = self.testdb.cursor()
   cursor.execute('INSERT INTO iaas.region_based_billing (date, region, account type, product type, total amount, no of products) VALUES (%s, %s, %s, %s, %s, %s)',(date, region, account_type,product_type,total,count) )

    self.testdb.commit()
    self.testdb.close()

我的 table 对象是:

 desc  iaas.region_based_billing;

    date                   date   NO           PRI      
    region                 varchar(50)  NO          
    account type           varchar(65)  NO          
    product type           varchar(65)  NO          
    total amount           float    NO          
    no of products         int(255) NO          

我知道这是很基本的问题,不确定到底是什么导致了这个问题。我尝试为日期类型“%s”保留单引号,但仍然无效。

这里也是错误

mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在“类型、产品类型、总金额、产品数量”附近使用的正确语法 VALUES ('2016-06-29', 'Asia Pa' at第 1 行

删除列名之间的 space。列名应该是单个单词或由 _ 分隔的单词。 在您的情况下,列名有差距。所以这些列应该是:-

account type = account_type
product type = product_type

等等...

删除了空格并解决了问题。谢谢。

Serial_no       int(11) NO  PRI     auto_increment
date            date    NO          
region          varchar(50) NO          
account_type    varchar(65) NO          
product_type    varchar(65) NO          
total_amount    float   YES         
no_of_products  int(255)    NO          

这里没有产品的数据类型是 int。但是,您正在使用它有一个字符串。对于整数,您需要使用 %d

cursor.execute('INSERT INTO iaas.region_based_billing (date, region, account type, product type, total amount, no of products) VALUES (%s, %s, %s, %s, %f, %d)',(日期,地区,count_type,product_type,总数,计数))

You can check this example.