2

誰か助けて、ここでヒントをくれませんか? Python 2.7 と MySQL-connector 1.0.12 を使用しています。

次の job_insert で %f を使用すると、「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 が値を挿入します。ただし、float は、3.0 から 3 および 987654.543210123 から 987654.5 など、いくつかの小数点以下の桁数でトリミングされます。データベースの列は両方とも float です。

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

御時間ありがとうございます。

4

2 に答える 2

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 ..?) であると仮定します。

于 2013-09-07T02:32:27.557 に答える
0

そのため、Python での文字列の書式設定は、C や C のような言語と非常によく似ています。

例えば:

やりたいと言う

x = "Hello buddy"そして、あなたが望むbuddyものになりたいなら、あなたはするでしょう:

x = "Hello %s" % ("Buddy")%i整数%f用、浮動小数点用など、いくつかの異なるタイプの % 形式があります。

文字列をフォーマットするためのより新しい、よりpythonicな方法があると思います。それは.formatここで見ることができる方法です。

確かに、私はあなたの質問を完全には理解していませんでした。

于 2013-09-07T01:34:46.040 に答える