有人可以帮忙并在这里给我一个提示吗?我正在使用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);"
感谢您的时间。
答案 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
希望这会对你有所帮助,诚然,我并不完全理解你的问题。