0

以下を実行しようとすると:

def postToMySQL(date,data,date_column_name,data_column_name,table):

cursor = conn.cursor ()


sql = "\"\"\"INSERT INTO " + table + " (" + date_column_name + ", " + data_column_name + ") VALUES(%s, %s)" + "\"\"\"" #+ ", " + "(" + date + ", " + data + ")"  
cursor.execute(sql,(date,data))

このエラーが発生します:

_mysql_exceptions.ProgrammingError:(1064、'SQL構文にエラーがあります...near: \' "" "INSERT INTO natgas(Date、UK)VALUES(\' 2012-05-01 13:00:34 \ ' 、\ '59 .900 \') "" " \ ' 1行目')

次のハードコードされた例は正常に機能するため、構文が間違っている場所については困惑しています。

def postUKnatgastoMySQL(date, UKnatgas):

cursor = conn.cursor ()

cursor.execute("""INSERT INTO natgas (Date, UK)VALUES(%s, %s)""", (date, UKnatgas))

エラーを見つけることができますか?

または、値リストだけでなくフィールドリストにもパラメータを渡す方法を教えてください。

どうもありがとう!

4

2 に答える 2

1

これらの三重引用符は、Pythonで文字列を表す方法です。それらは実際のクエリの一部であるとは想定されていません。

別の注意点として、このアプローチでの入力を信頼するようにしてください。見上げるSQL Injection

于 2012-05-01T12:17:07.050 に答える
0

\'"" "INSERT INTO natgas(Date、UK)VALUES(\' 2012-05-01 13:00:34 \'、\' 59.900 \')" "" \'at line 1')

これは明らかにvlaidSQLコマンドではありません。あなたはそこからバックスラッシュを取り除く必要があります、あなたはおそらくあなたがすべきではないものを逃れています。

たとえば、三重引用符は必要ありません。

于 2012-05-01T12:14:06.910 に答える