我正在尝试使用 pyodbc 连接到 Microsoft sql server 数据库.我不断收到错误
I am trying to connect to a Microsoft sql server database using pyodbc. I keep getting the error
错误: ('01000', "[01000] [unixODBC][Driver Manager]无法打开 lib 'ODBC Driver 17 for SQL Server': 找不到文件 (0) (SQLDriverConnect)")>
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
检查 pyodbc.drivers()
没有结果
我根据提供的说明安装了 Microsoft ODBC 驱动程序 这里:
I installed the Microsoft ODBC driver according to the instructions provided here:
我运行了 odbcinst -j
产生了
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/pawannandakishore/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
但是当我到达 /etc
时,我找不到 odbcinst.ini
或 odbc.ini
.他们似乎在 opt/homebrew/Cellar/
but when I got to /etc
, I cannot find either odbcinst.ini
or odbc.ini
. They are seem to be in opt/homebrew/Cellar/
我真的很感激这方面的帮助.
I would really appreciate some help on this.
您实际上可以在容器中使用 pyodbc
但容器应该在 x86_64 架构容器中构建和执行.为此,您需要将 platform
添加到 docker-compose.yml
或在容器运行期间(使用 docker 时)提供参数.您需要确保使用 buildx 构建容器!
You actually can use pyodbc
in the container but the container should be built and executed in the x86_64 arch container. In order to do this, you need to add the platform
either to docker-compose.yml
or provide an argument during container run (when using docker).
You need to make sure that you are building a container using buildx!
码头工人:
docker buildx build --platform linux/amd64 -t myimage .
docker run --platform linux/amd64 myimage bash
Docker-compose:
Docker-compose:
version: "3.9"
services:
web:
image: myimage:latest
build:
context: ./
platform: linux/amd64
pyodbc
确实不支持 ARM 架构.我在 M1 上使用 pymssql
以连接到 MSSQL 服务器.
It's true that pyodbc
does not support ARM architecture. I'm using pymssql
on my M1 in order to connect to MSSQL server.
您需要安装系统要求freetds-dev
.对于 alpine 容器,它将是 apk add freetds-dev
You need to install the system requirement freetds-dev
. For alpine container, it will be apk add freetds-dev
在 pip 要求中添加 pymssql
包.
In pip requirements add pymssql
package.
使用简单脚本测试连接:
Test connection with simple script:
import pymssql
conn = pymssql.connect(server='mssql', user='SA', password='Passw@rd', database='master')
cursor = conn.cursor()
cursor.execute("""SELECT 1;""")
SQLALCHEMY_DATABASE_URI = (
f"mssql+pymssql://{MSSQL_USER}:{MSSQL_PASSWORD}@{MSSQL_HOST}/{MSSQL_DB}?"
)
如果您需要在 M1 上运行 MSSQL 数据库 - 这是我对这个问题的回答 https://stackoverflow.com/a/66919852/11515610
If you need to run MSSQL database on M1 - here my answer on this problem https://stackoverflow.com/a/66919852/11515610
相关链接:
自适应服务器连接失败(DB-Lib 错误消息 20002,严重性 9)
https://docs.sqlalchemy.org/en/14/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pymssql
https://docs.microsoft.com/en-us/sql/connect/python/pymssql/step-1-configure-development-environment-for-pymssql-python-development?view=sql-server-ver15
https://pymssql.readthedocs.io/en/stable/pymssql_examples.html
这篇关于M1 Mac 上的 Pyodbc的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!