Файл Docker SqlAlchemy и mysql-connector-python - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь настроить SqlAlchemy и mysql-connector-python с помощью Docker.Я помещаю в файл require.txt следующее, но всякий раз, когда я пытаюсь вставить запись, я получаю ошибку сегмента, а именно: «Процесс завершен с кодом выхода 139 (прерван сигналом 11: SIGSEGV)».Я запускаю это на Ubuntu.У кого-нибудь есть файл Docker с этим рабочим?Нужно ли мне делать что-то еще, кроме того, чтобы поместить SqlAlchemy и mysql-connector-python в файл needs.txt и сделать:

FROM ubuntu:16.04
# Update and install Python libraries
RUN apt-get -y update && apt-get install -y python3
RUN pip3 install --upgrade pip
RUN pip3 install -r /event_git/requirements.txt

needs.txt имеет:код, который я делаю:

db_uri = ConfigFetcher.get_db_uri()
engine_obj = create_engine(db_uri, pool_recycle=3600)
SESSION_MAKER = sessionmaker(bind=engine_obj)

и затем делаю:

    @staticmethod
    @contextmanager
    def get_session_no_expire_scope() -> Session:
        """Provide a transactional scope around a series of operations."""
        session = SESSION_MAKER(expire_on_commit=False)
        try:
            yield session
            session.commit()
        except:
            session.rollback()
            raise
        finally:
            session.close()

Я пытался выполнить https://mysql.wisborg.dk/2019/03/03/using-sqlalchemy-with-mysql-8/#Installing-MySQL-ConnectorPython-and-SQLAlchemy безрезультатно.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Разобрался с проблемой.Ключ в том, что import mysql.connector должен находиться в верхней части файла, где находится create_engine.Все еще не уверен в точной причине, но, по крайней мере, это определяет _CONNECTION_POOLS = {}.Если кто-то знает почему, пожалуйста, дайте свои мысли.Пример импорта в файл python:

import mysql.connector # need this _regardless_ of if you use it or not.
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.session import Session
from sqlalchemy import engine
0 голосов
/ 11 июня 2019

Текущая версия Connector / Python - 8.0.16, пожалуйста, обновите файл needs.txt.

Вы можете вручную обновить установленную версию, запустив: pip3 install --upgrade mysql-connector-python.

Надеюсь, это поможет.

...