У меня есть скрипт автоматизации Python 2.7, который собирает данные из нескольких источников и генерирует отчет. Он использует sqlalchemy для получения некоторых данных из БД MySQL. Скрипт хорошо работает с venv, созданным пару месяцев назад. Но если попытаться воссоздать venv, используя тот же файл require.txt, и запустить скрипт, он не сможет получить данные из БД с сообщением об ошибке:
sqlalchemy.exc.InternalError: (pymysql.err.InternalError)(1115, u "Неизвестный набор символов: 'utf8mb4'")
Конкретные версии пакетов не указаны в файле needs.txt, однако среды выглядят очень похоже, по крайней мере, версия sqlalchemy такая же, как вобе.
Есть идеи, почему одна из сред работает, а вторая - нет, и как это можно исправить? Так я работаю с БД.
engine = create_engine(
'mysql+pymysql://{user}:{pwd}@{host}/{db_name}'.format(
user=self.user,
pwd=self.pwd,
host=self.server,
db_name=self.db_name
),
echo=False,
pool_pre_ping=True,
pool_size=100,
pool_recycle=7200,
)
LOGGER.info('Created: %s', engine)
self.session = scoped_session(sessionmaker(bind=engine, autoflush=False, autocommit=False))
....
def execute_sql(self, sql_request):
"""Execute SQL query
:param (str) sql_request: SQL query
:return: (obj) query execution result
"""
result = self.session.execute(sql_request)
return result
Ошибка, о которой я упоминал, возникает в self.session.execute (sql_request)