我有一个Flask应用程序,它的数据库是MySQL。我正在尝试对其中一个包含波斯数据字段的表之一执行SELECT查询。查询输出是问号(?),而不是波斯字符。 这是我的数据库字符集:
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+---------+
在服务器上执行SELECT查询时,这里是波斯字符:
mysql> select dComment from dailyLeave;
+---------------------------------------------------+
| dComment |
+---------------------------------------------------+
| مرخصی یک روزه به دلیل کسالت |
| مرخصی اجباری! |
+---------------------------------------------------+
这是当我在Python代码中执行该查询时的同一查询的输出:
cur, conn = connection()
cur.execute('SELECT dComment FROM dailyLeave')
(('????? ?? ???? ?? ???? ?????',), ('????? ??? ???? ????',))
答案 0 :(得分:2)
我自己找到解决方案,这很容易:) 在执行查询之前,请在您的代码中写下这些代码:
set session time_zone='Asia/Kolkata'
db 是MySQLdb.connect()的结果, dbc 是db.cursor()的结果。