■処理の概要
- Flaskを利用してフォームに入力した文字をMysqlのテーブルに入力
- Mysqlから該当のレコードを抽出し、その内容をFlaskを利用したページに表示
■困っていること
- 「あ
い
う
え
お」
とフォームに入力しMysqlのテーブルに挿入
- そのデータを抽出すると「あ\r\nい\r\nう\r\nえ\r\nお」と表示されてしまう
- 抽出時も
「あ
い
う
え
お」
と表示させたいです。
- 「a'b」も「a'b」となってしまいますが、「a'b」と表示させたいです。
■利用環境
- ubuntu
- Python3.6
- Mysql5.7
- mysql.connector
■ソース
- 挿入
python3
1sql = """ 2INSERT INTO my_table (description) 3VALUES (%s)""" 4cursor.execute(sql ,description)) 5cursor.execute('commit')
- 表示
python3
1sql = """ 2select description from my_table 3""" 4cursor.execute(sql) 5descriptions = cursor.fetchall() 6 7for row in descriptions: 8 print(row[0]) 9
よろしくお願いします。
二重エスケープみたいな挙動ですね。
あ' (「あ」の後ろにシングルクォート)を登録したら、どう表示されますか?
はい、おっしゃるとおりだと思います。
ご質問の件ですが、「あ\'」と表示されました。
python経由でなく、普通にmysqlのクライアントで"select description from my_table"とすると次のように表示されました。insertの段階でおかしいのでしょうか。
+-------------+
| description |
+-------------+
| あ\' |
+-------------+
INSERTの段階で余計にエスケープしているようです
なんということでしょう。解決しました!
insert時に使っている変数descriptionにエスケープ処理を入れていたのが余計でした。
description = connector._cmysql.escape_string(request.form["description"])
ありがとうございますm(_ _)m
回答2件
あなたの回答
tips
プレビュー