如何在docker容器中使用Python和Mssql服务器时修复" pyodbc.Error: No driver name specified;"



我正在为我的应用程序设置Docker容器,我想将Python代码与Microsoft SQL Server连接起来。

以下是设置和python代码

odbcinst.ini
[FreeTDS]Description=FreeTDS unixODBC Driver Driver=/usr/lib/x86_64- 
linux-gnu/odbc/libtdsodbc.so Setup=/usr/lib/x86_64-linux- 
gnu/odbc/libtdsS.so
Python
import pyodbc
server = '127.0.0.1'
db = 'bd1'
drivers = [item for item in pyodbc.drivers()]
driver = drivers[-1]
engine = create_engine('mssql+pyodbc://' + server + '/' + db + "?" + 
driver)
conn = pyodbc.connect('DRIVER={driver};SERVER=' + server + 
';PORT=1433;DATABASE=' + db + ';UID=SA;PWD=MyPass123!')

Docker-compose.yml
version: '3'
services:
  pyth:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: "mcr.microsoft.com/mssql/server"
    environment:
      SA_PASSWORD: "MyPass123!"
      ACCEPT_EULA: "Y"
    ports:
      - "1433:1433"

这是我遇到的错误

"No driver name specified; "
pyth_1  | Traceback (most recent call last):
pyth_1  |   File "testing_sql.py", line 15, in <module>
pyth_1  |     conn = pyodbc.connect('DRIVER={driver};SERVER=' + server + ';PORT=1433;DATABASE=' + db + ';UID=SA;PWD=MyPass123!')
pyth_1  | pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'driver' : file not found (0) (SQLDriverConnect)")

我认为问题在下行 -

conn = pyodbc.connect('DRIVER={driver};SERVER=' + server + 
';PORT=1433;DATABASE=' + db + ';UID=SA;PWD=MyPass123!')

在这里,驱动程序没有用作变量。因此,如果您使用的是Python3,那么这样做应该解决您的问题。

conn = pyodbc.connect(f'DRIVER={driver};SERVER=' + server + 
';PORT=1433;DATABASE=' + db + ';UID=SA;PWD=MyPass123!')

最新更新