[英]How to connect to a dockerized PostgreSQL from (an undockerized) Python app
[英]How to connect to local sql server database from dockerized python app
我正在尝试从 dockerized python 容器连接到本地计算机上长期运行的 SQL Server 数据库,但我不断收到以下错误。 我也会添加所有相关代码。 我可以确认,我的用户名和密码都是正确的(我已经验证了 10 多次,并在服务器和数据库上设置了一个具有完全权限的新帐户)。
我在最后一天搜索了堆栈溢出和文章,但没有人给我任何不同的东西,所以我希望这里有人能提供一些信息,为我指明正确的方向。 如果您需要更多信息,请告诉我。
pyodbc.ProgrammingError: ('42000', "[42000] [FreeTDS][SQL Server]Login failed for user 'myusername'. (18456) (SQLDriverConnect)")
这是我的码头文件
FROM python:3.7
RUN echo "[FreeTDS]\n\
Description = FreeTDS unixODBC Driver\n\
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\n\
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so" >> /etc/odbcinst.ini
RUN apt-get update \
&& apt-get install unixodbc -y \
&& apt-get install unixodbc-dev -y \
&& apt-get install freetds-dev -y \
&& apt-get install freetds-bin -y \
&& apt-get install tdsodbc -y \
&& apt-get install --reinstall build-essential -y
RUN pip install --trusted-host pypi.python.org pyodbc==4.0.26
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY src/. .
CMD ["python", "main.py"]
这是 main.py
import pyodbc
try:
sql_connection = pyodbc.connect('Driver={FreeTDS};'
'Server=host.docker.internal,1433;'
'Database=mydatabasename;'
'UID=myusername;'
'PWD=mypassword')
sql_cursor = sql_connection.cursor()
sql_cursor.execute("Select @@version")
print(sql_cursor.fetchone())
finally:
sql_cursor.close()
sql_connection.close()
我首先尝试使用 SQL 客户端(psql、mysql-client 无论你拥有什么数据库)从正在运行的 docker 容器(通过 docker exec)内部连接到这个数据库,并确认你可以做到。 如果不是很明显,数据库级别不允许连接,则数据库设置中可能只允许 127.0.0.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.