スポンサーリンク
スポンサーリンク

pythonの実行結果が環境によって違う問題

スポンサーリンク
スポンサーリンク

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

未設定
スポンサーリンク
スポンサーリンク
スポンサーリンク
びぼうろく

コメント

タイトルとURLをコピーしました