繁体   English   中英

问题 - 无法打开登录请求的服务器。 用Python连接Azure SQL数据库时登录失败

[英]Issue - Cannot open server requested by the login. The login fails when connecting to Azure SQL database with Python

我正在使用 Python 查询 Azure SQL 数据库。 我尝试使用 SSMS 2018 进行连接并且它有效。 另外,我安装了 ODBC 17、18 个驱动程序。 但是当我从代码中尝试时,它给出了:

无法打开登录请求的服务器

凭据是正确的。 下面是我的代码。 请协助。

import pyodbc
with pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};Server=tcp:****-dev.database.windows.net,1433;Database=****SQLdb;Uid=****@abc.com;Pwd=****;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;') as conn:
    with conn.cursor() as cursor:
        cursor.execute("select * from [dbo].Test")
        row = cursor.fetchone()
        while row:
            print (str(row[0]) + " " + str(row[1]))
            row = cursor.fetchone()

如果您的 SQL 数据库服务器称为myazureserver并且您的登录名是user@example.com ,那么您必须提供您的登录user@example.com@myazureserver

参考:[使用 EMAIL 地址作为 AZURE SQL 上的登录用户名] ( https://stegriff.co.uk/upblog/using-email-addresses-as-login-usernames-on-azure-sql/ )

这是有效的完整代码:

import pyodbc

#Variables
driver='{ODBC Driver 18 for SQL Server}'
server = 'xxxxxxx.database.windows.net'
database='sqldb-data*****1'

#Inserting JSON data into SQL database
def insertToSQL(jsonData):
    with pyodbc.connect('Driver={};Server=tcp:{},1433;Database={};trusted_connection=yes'.format(driver,server,database)) as conn:
        with conn.cursor() as cursor:
            for item in jsonData:
                sql = """INSERT INTO [dbo].test 
                        VALUES ('{}','{}')""".format(item['EMPL_NO'],
                        item['EMPL_NAME'])
    print('Insert completed')

#Read text file with comma delimiter
def readTextFile(filePath):
    data = []
    with open(filePath, 'r') as file:
        headers = (file.readline().strip()).split(',')
        for line in file:
            fields = line.split(',')
            data.append({
                headers[0]: fields[0].strip(),
                headers[1]: fields[1].strip()
            })
    print('Reading file completed')
    return data

fileData = readTextFile(r'\\abcd\*****\test.txt')
#print(fileData)
insertToSQL(fileData)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM