Я использую pymysql для вставки данных (китайский). Код работает, и результат в порядке, когда я использую fetchall и печатаю результат. Однако, когда я вручную вхожу в mysql, я обнаруживаю, что данные представляют собой беспорядочный код, когда я использую «выбрать * из ТБ». Кодировка символов должна быть в порядке, потому что она работает, когда я вручную вставляю китайский язык в новую таблицу.
Любые предложения, пожалуйста?
Я проверил кодировку «utf-8», когда запускаю «show create database taoya» и «show create table TB».
Переменная такая:
+--------------------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------------------------------+
Код выглядит следующим образом:
mysql= pymysql.connect(host=xx,user=xx,password=xxx, db="taoya",charset="utf8mb4")
try:
with mysql.cursor() as cur:
# cur.execute("set names 'utf8'")
cur.execute("DROP TABLE IF EXISTS TB")
sql = '''CREATE TABLE IF NOT EXISTS TB(
Commody CHAR(70) NOT NULL,
Store CHAR(20),
Address CHAR(20),
Price CHAR(20),
Paid CHAR(40))
DEFAULT CHARSET=utf8mb4
'''
cur.execute(sql)
insertsql="INSERT INTO TB (Commody,Store,Address, Price,Paid) VALUES (%s, %s,%s,%s,%s)"
data= ("牛 啊","hi","你好","$33","3人")
cur.execute(insertsql,data)
cur.execute("SELECT * FROM TB;")
result = cur.fetchall()
print(result)
mysql.commit()
finally:
mysql.close()
Результат в порядке:
(('牛 啊', 'hi', '你好', '$33', '3人'),)
Со стороны mysql:
mysql> select * from TB;
+------------+-------+---------+-------+------+
| Commody | Store | Address | Price | Paid |
+------------+-------+---------+-------+------+
| 鐗涢€鍟 | hi | 浣犲ソ | $33 | 3浜 |
+------------+-------+---------+-------+------+