繁体   English   中英

SqlAlchemy和mysql-connector-python Docker文件

[英]SqlAlchemy and mysql-connector-python Docker file

我试图用Docker设置SqlAlchemy和mysql-connector-python。 我在requirements.txt中添加了以下内容,但每当我尝试插入记录时,我都会遇到Seg Fault,特别是'Process done with exit code 139(由信号11中断:SIGSEGV)'。 我在ubuntu上运行它。 有没有人有这个工作的Docker文件? 除了在requirements.txt中放置SqlAlchemy和mysql-connector-python之外,我还需要做其他事情吗?

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

requirements.txt有:

grpcio==1.11.0
grpcio-tools==1.11.0
mysql-connector-python==8.0.6
SqlAlchemy

对于我正在做的Python代码:

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无济于事。 任何帮助将非常感谢。

Connector / Python的当前版本是8.0.16,请更新您的requirements.txt。

您可以通过运行以下pip3 install --upgrade mysql-connector-python手动更新已安装的版本: pip3 install --upgrade mysql-connector-python

我希望它有所帮助。

找出问题所在。 关键是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM