我是使用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行
答案 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,总数,计数))