![](/img/trans.png)
[英]Cannot open database "\'name\': \'master\'" requested by the login. The login failed
[英]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.