无法使用python.mysql连接器插入数据

时间:2016-07-04 05:19:41

标签: python mysql-workbench mysql-python mysql-connector

我是使用MySQL连接器进行python的新手,我将下面给出的数据插入到名为“region_based_billings”的表中。我尝试了所有可能的方法来插入这些数据,似乎我错过了一个语法,不知道确切的位置和数据类型? 。

   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()

我的表格对象是:

 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'在第1行

3 个答案:

答案 0 :(得分:1)

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

account type = account_type
product type = product_type

依旧......

答案 1 :(得分:0)

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

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          

答案 2 :(得分:0)

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

cursor.execute('INSERT INTO iaas.region_based_billing(日期,地区,帐户类型,产品类型,总金额,产品号)价值(%s,%s,%s,%s,%f ,%d)',(日期,地区,count_type,product_type,总数,计数))

You can check this example.