3

Flask、SQLAlchemy、および MySQL を使用して作成された Web アプリケーションがあります。フォーム経由で送信された文字列を取得すると (例: request.form['Username'])、それらは SQLAlchemy 経由で送信され、最終的には Unicode 文字列として MySQL に送信されます。私のデータベースは latin-1 文字セットを使用しているので、全体で latin-1 を使用したいと考えています。Flask または SQLAlchemy に、手動で実行せずに常に latin-1 を使用/変換させる方法はありstring.encode('latin-1')ますか?

これがどのように問題を引き起こすかの例として、バインドされたパラメーターとしてSELECT...WHERE Name=:nameand を指定するとrequest.form['Name']、as が通過するu'Some Name'ため、一致するものが見つかりません。

4

2 に答える 2

6

接続パラメーターで、MySQL への SQLAlchemy 接続のエンコーディングを設定できます。

create_engine('mysql+mysqldb:///mydb?charset=latin1')

MySQL の Unicode セクションに関する SQLAlchemy ドキュメントを参照してください。

于 2012-08-03T16:20:03.920 に答える
2

まず、Flask Webサイト( http://flask.pocoo.org/docs/unicode/)のUnicodeの章を読んで ください。「Pythonファイルで非Unicode文字を使用している場合は、ファイルが使用するエンコーディングをPythonに指示する必要があります」と書かれています。

これを行うには、Pythonファイルの先頭に以下を追加します。これは、使用するエンコーディングをインタプリタに指示します。

# coding: latin1
于 2012-08-03T16:21:54.277 に答える