2

有人可以在这里帮忙给我小费吗?我正在使用 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。两个数据库列都是浮动的。

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

谢谢你的时间。

4

2 回答 2

3

我强烈建议使用字符串格式

我不太确定 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..?)

于 2013-09-07T02:32:27.557 回答
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

希望这对您有所帮助,诚然我没有完全理解您的问题。

于 2013-09-07T01:34:46.040 回答