1

Pythonを使用してリストを使用してMySQLにデータを挿入しようとしています。
リストには文字列と整数の両方が含まれています。
文字列の置換に%sを使用できません。また、%は機能しません。

def insert(self,data):
    db =  MySQLdb.connect(db=self.database,host=self.host,port=self.port,user=self.user,passwd=self.password)
    c=db.cursor()
    var_string = ', '.join('?' * len(data))
    query = 'INSERT INTO wmr200 (time, temp_in, temp_out, dewpoint, hum_in, hum_out, windspeed, wind_direction, windchill, rain_1h, rain_24h, rain_total, rel_pressure, abs_pressure, tendency, forecast) VALUES (now(), %s);' % var_string
    c.execute(query, data)

エラーは次のとおりです。

ファイル"/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py"、159行目、execute
query = query%db.literal(args)
TypeError:文字列のフォーマット中にすべての引数が変換されるわけではありません

4

1 に答える 1

2

例外を生成する式:

query % db.literal(args)

の各要素ごとqueryに1つのフォーマット文字列(など)を含める必要があります。%sdb.literal(args)

ただし、関数によって生成されたasの値にはquery、正確にゼロのフォーマット文字列が含まれています。

于 2012-04-28T12:58:48.367 に答える