У меня возникла проблема с установкой utf8 в моей таблице базы данных.
Я следовал этим документам, но не работал
документы для pymsql: https://pymysql.readthedocs.io/en/latest/modules/connections.html
документы для peewee:http://docs.peewee -orm.com / ru / latest / peewee / database.html # using-mysql
вот мой код
import datetime
from peewee import *
import pymysql
from getDataFromExcel import *
mysql_db = MySQLDatabase(
databasename,
user='username',
password='password',
host='host',
charset='utf8', # <-- what I followed from docs
)
class BaseModel(Model):
"""A base model that will use our MySQL database """
class Meta:
database = mysql_db
class Food(BaseModel):
name = CharField()
allergy = CharField()
special = CharField()
createdAt = DateTimeField(default = datetime.datetime.now)
updatedAt =DateTimeField(default = datetime.datetime.now)
class Meta:
table_name='Food'
def initialize():
"""Create the database and the table if they don't exist."""
mysql_db.connect()
print('Initialized')
def insert_food_data(food_rows):
with mysql_db.atomic():
Food.insert_many(food_rows,fields=[
Food.name,
Food.allergy,
Food.special
]).execute()
if __name__ =='__main__':
initialize()
Я запускаю это с помощьюpython3 -i filename.py
после этого я в интерактивном режиме добавляю еще немного кода (удаляю существующую таблицу и создаю новую таблицу, чтобы проверить, что настройка utf8 выполнена)
mysql_db.execute_sql("SET FOREIGN_KEY_CHECKS=0")
mysql_db.drop_tables([Food])
mysql_db.create_tables([Food])
но когда я проверяю свою базу данных с помощьюMySQLWorkbench. нажатие DDL моей таблицы говорит
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`allergy` varchar(255) NOT NULL,
`special` varchar(255) NOT NULL,
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
, что означает, что charset установил значение 'latin1', и я могу узнать это, вставив в него некоторые данные.
почему это?
я что-то не так установил в charset ase uf8?
Буду очень признателен, если кто-нибудь сможет мне помочь.
Спасибо, что прочитали это.