2017-08-04 109 views
0

PythonのMySQLデータベースにおそらく単純なテキストが挿入されているという問題があります。テキストは、この行の主キーに基づいて既存の行を更新するためのHTML文字列です。私は(改行は読みやすくするために追加された)PyMySQLでこの文を使用しています:Python/MySQL:単純なテキストの挿入時に「切り捨てられた不正なdouble値...」

cursor.execute("UPDATE my_table SET my_text_col = %s 
    AND another_int_col = %s WHERE my_table_pk_col = %s", 
    (some_html_string, some_int, this_rows_pk)) 

これはかなり簡単にする必要がありますが、(多くの場合、MySQLでの方法として)それは明らかではありません。私は

Warning: (1292, Truncated incorrect DOUBLE value: [Beginning of some_html_string]) 

を取得し、my_text_col0に設定されています。

なぜこれが機能しないのかわかりません。この表にはダブルフィールドはありません.HTMLは適切にエスケープされる文字列です。他の2つの値はintです。私は他の人が同様の問題を報告していることを知りましたが、これに関するバグレポート(#43437#46641)ですが、これらは8歳以上で修正されていません(MySQL 5.6.27とPyMySQL 0.7 11)。

誰でもこの簡単なアップデートを完了させるための解決策または回避策があれば、私はそれを高く評価します。シンプルではなく、明らかな構文エラーです

答えて

1

は:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

これは、ドキュメント(https://dev.mysql.com/doc/refman/5.7/en/update.html)から構文で、複数のフィールドがないと文とUPDATE文でカンマで区切られています。

+0

私の神。だから私は2時間を無駄にしました。なぜなら、MySQLは、and、or *または*の代わりにカンマが必要であると私にはわかりませんでした。代わりに私を完全に間違った方向に送りますか?まったくの間違い。とにかくありがとうございました! – user8793

関連する問題