我正在尝试用Docker设置SqlAlchemy和mysql-connector-python。我将以下内容放入requirements.txt中,但每当我尝试插入记录时,我都会得到一个Seg错误,特别是“进程已完成,退出代码139 (被信号11中断:SIGSEGV)”。我在ubuntu上运行这个。有没有可用的Docker文件?除了将SqlAlchemy和mysql-connector-python放在requirements.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.txtrequirements.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,但没有结果。任何帮助都将不胜感激。
发布于 2019-06-11 18:25:17
连接器/Python的当前版本是8.0.16,请更新您的requirements.txt。
您可以通过运行:pip3 install --upgrade mysql-connector-python手动更新已安装的版本。
我希望它能帮上忙。
发布于 2019-06-12 14:12:17
弄清楚了问题所在。关键是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 enginehttps://stackoverflow.com/questions/56536524
复制相似问题