Python MySQL连接器,“错误的arg数...”

时间:2013-09-07 01:30:04

标签: python mysql

有人可以帮忙并在这里给我一个提示吗?我正在使用Python 2.7和MySQL-connector 1.0.12。

以下带有%f的job_insert会引发错误“mysql.connector.errors.ProgrammingError:字符串格式化过程中参数数量错误”。

job = {'customer': u'Acme', 'period': 3.0, 'cost': 987654.543210123}
job_insert = "INSERT INTO f.job (customer, period, cost) VALUES (%(customer)s, %(period)f, %(cost)f);"

cursor.execute(job_insert, job)

当我使用%s时,mysql.connector会插入值。但是,浮点数会被几个小数位修整,例如3.0至3和987654.543210123至987654.5。两个数据库列都是float。

job_insert = "INSERT INTO f.job (customer, period, cost) VALUES (%(customer)s, %(period)s, %(cost)s);"

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

我强烈建议您使用string format

我不太确定你的mysql表中的列数据类型,通常如果它是一个varchcar类型我在它们周围加上单引号和没有单引号的数字。

job_insert = "INSERT INTO f.job (customer, period, cost) VALUES ('{0}', {1}, {2});".format(job['customer'], job['period'], job['cost'])
cursor.execute(job_insert)
cursor.execute('commit')

这将假设您的客户列是varchar,期间和成本是数字(int,float ..?)

答案 1 :(得分:0)

因此,Python中的字符串格式与C和C类似的语言非常相似。

例如:

说你想做

x = "Hello buddy"并且您希望buddy成为您想要的任何内容,然后您会这样做:

x = "Hello %s" % ("Buddy")有几种不同类型的%格式,例如%i用于整数,%f用于浮点数,依此类推。

有一种更新的,我认为更加pythonic,格式化字符串的方式,以及使用.format方法的方法,您可以在这里查看,http://docs.python.org/2/library/string.html#string-formatting

希望这会对你有所帮助,诚然,我并不完全理解你的问题。