【发布时间】:2020-02-28 10:01:22
【问题描述】:
当我使用pyodbc创建连接时
connectionString = ('DRIVER='+driver+';SERVER='+server+';PORT='+port+';UID='+username+';PWD='+password+';DATABASE='+db_environment)
db_connection_dw = pyodbc.connect(connectionString)
cursor = db_connection_dw.cursor()
cursor.execute(sql_query_string)
print(cursor.fetchone())
对于包含特殊字符的 CharField 类型的字段,我得到了奇怪的结果。
例如,我得到 'M\x8adic' 而不是 'Mèdic'
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONIOENCODING=utf-8
ADD devartodbcase_amd64.deb /tmp/devartodbcase_amd64.deb
RUN apt-get clean && \
apt-get update && \
apt-get install -y locales locales-all && \
locale-gen ca_ES.UTF-8 && \
apt-get install -y gettext libgettextpo-dev g++ unixodbc unixodbc-dev libaio1 && \
cd /tmp/ && dpkg -i devartodbcase_amd64.deb
ENV LANG ca_ES.UTF-8
ENV LC_ALL ca_ES.UTF-8
COPY ./requirements.txt /requirements.txt
RUN pip install --upgrade pip==20.0.2 && pip install -r /requirements.txt
RUN mkdir /app
WORKDIR /app
COPY ./app/ /app
requirements.txt
Django==2.2.7
djangorestframework==3.10.3
django-filter==2.2.0
psycopg2==2.8.4
pyodbc==4.0.28
numpy==1.18.1
pandas==1.0.1
python-decouple==3.3
dj-database-url==0.5.0
django-widget-tweaks==1.4.5
SQLAlchemy==1.3.13
是驱动配置,Dockerfile配置引起的问题吗? 提前致谢
【问题讨论】:
-
Python 代码中
driver的值是多少? -
如果我打电话给
pyodbc.drivers()我得到['ODBC Drivers', 'Devart ODBC Driver for ASE']你指的是那个吗? -
我指的是您嵌入到连接字符串中的值:
connectionString = ('DRIVER='+driver+... -
啊,对不起。我的驱动变量是
{Devart ODBC Driver for ASE} -
很难说
\x8a可能来自哪里。 “è”是 UTF-8 编码为C3 A8所以如果你得到\xa8它会更有意义。您可能想看看是否可以从 Devart 那里得到关于他们的驱动程序使用什么编码的明确答案。
标签: python docker utf-8 dockerfile pyodbc