localのUbuntuとサーバーで結果が違う
時にはそんなこともあると思う。
問題のソース。抜粋
import MySQLdb
division ="B1"
season = "2022-23"
date= "2022-12-11"
connection = MySQLdb.connect(
host='XXXXXXX')
with connection.cursor(MySQLdb.cursors.DictCursor) as cur:
cur.execute("select 文"))
data = cur.fetchall()
connection.close()
print(data[0])
print(data[0]["result"][0]["home_team_name"])
Pythonで、「MySQLdb」をつなぎSELECT文を投げるだけのプログラムだ。カラムの型はjson型が含まれる。
サーバーで表示されるのはこれ。日本語箇所が文字化ける。
[{"home_team_name": "??", "home_team_fullname": "??89ERS", "home_score": 72, "away_score": 81, "away_team_name": "??", "away_team_fullname": "???????", "stadium": "?????????????????"}
デバッグしてみても、fetchallした時点から化けて取得される。
一方で、ローカル環境から同じDBにアクセスしに行くと、日本語文字列が普通にとれてしまう。
Pythonのバージョンは実は違うが。。。。
解決
connectするときにcharsetを指定すれば治った。けどなんで???
click 8.1.3
Flask 2.2.2
importlib-metadata 5.0.0
itsdangerous 2.1.2
Jinja2 3.1.2
MarkupSafe 2.1.1
mysqlclient 2.1.1
pip 22.3
setuptools 60.2.0
Werkzeug 2.2.2
wheel 0.37.1
zipp 3.10.0
コメント