python - 与 microsoft azure sql 数据库的连接在本地环境中有效,但在生产中无效

标签 python sql azure flask database-connection

我正在尝试打开一个 Web 服务应用程序,该应用程序将允许我使用 python 代码连接到 azure 上的数据库,我尝试过使用 sqlalchemypyodbc 并且我是能够成功连接到我的机器上的数据库,在本地主机中,我可以执行我想要在那里执行的所有必要操作。但我希望能够设置此代码,以便能够在 ajax 调用中命中特定路由,该调用可以对我的数据库执行某些操作,例如将用户事件标志翻转为 false。然而问题是,当我将 python 代码上传到 azure 时,在这里使用本指南( https://learn.microsoft.com/en-us/azure/app-service/quickstart-python?tabs=bash&pivots=python-framework-flask )它只是返回 500 服务器错误,我在跟踪中找不到任何关于它为什么不起作用的内容,我认为它可能只是我的本地计算机在数据库的 IP 地址中被列入白名单,但即使我将该应用程序服务 IP 地址添加到允许的 IP,它仍然返回服务器错误。这是代码的设置:

from flask import Flask
from sqlalchemy import create_engine
import pyodbc

app = Flask(__name__)

@app.route('/')
def connection():
    Driver = "{ODBC Driver 13 for SQL Server}"
    Server = "server string"
    Port = 1433
    Database = "dbname"
    Uid = "user"
    Pwd = "pass"
    
    try:
        cnxn = pyodbc.connect(f'DRIVER={Driver};SERVER={Server};DATABASE={Database};Uid={Uid};Pwd={Pwd};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;')
        cursor = cnxn.cursor()
        cursor.execute(f"SELECT * FROM (Database Table) where id = 999999999;")

    for row in cursor:
        print('row = %r' % (row,))
    return "Connection to database successful"

我省略了某些细节,但语法应该保持不变,同样,在我的本地计算机中,我可以连接到数据库并返回数据。但是一旦它在 azure 中编译了代码,它就不再起作用了。

请原谅 try 语句。我试图捕获错误并将其发送给客户端,希望从 500 错误中收集更多信息,但没有成功。

**编辑:值得一提的是,如果我删除实际的连接字符串以及与连接到数据库有关的任何内容,代码将返回“连接到数据库成功”这让我相信它根本没有完全建立与数据库的连接。这就是为什么它会出错,但是问题仍然存在,为什么我可以在本地环境中连接,但不能在 azure 中连接?

最佳答案

您听说过 Azure 中的远程调试吗?这是使用 Visual Studio 代码或 VS 跟踪 Web 或应用程序最初运行良好的错误的最佳工具。您可以使用多种方法逐行或逐簇调试。请在这里查看

https://learn.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2019

关于python - 与 microsoft azure sql 数据库的连接在本地环境中有效,但在生产中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68867980/

相关文章:

python - 数据存储区生成的 ID 能否覆盖我的实体?

python - 如何避免在 Django views.py 中重复一大块代码

python - SK学习: Gaussian Process Regression not changed during learning

Java/XML/SQL - XML 中的 SQL 无法在 JDBC (Sybase) 驱动程序中运行

azure - 使用 Azure 关联组删除虚拟网络

python - 项目之间的 pytest 重用固定装置

mysql - SQL 批量更改日期格式

azure - 无法使用 Azure CLI 访问账单信息

c# - Azure Functions 需要很长时间才能横向扩展

mysql - SQL 查询 - 派生一个查询,该查询将找到其他查询获得的数字的平均值