python - 无法打开登录请求的数据库“\'name\': \'master\'”。登录失败
问题描述
我目前遇到错误
无法打开登录请求的数据库“'name': 'master'”。登录失败
当我尝试在 Django/Python Web 应用程序中执行我的 PrintCSV 视图函数时
该功能应该读取服务器上的每个数据库并打印区域中的所有帐户。
我不确定这个问题可能与我的登录权限或我的代码本身有关。
视图.py:
def PrintCSV(request):
#Getting list of DB Names
cnxn = pyodbc.connect('DRIVER={SQL Server};'
'SERVER=serverIP;'
'PORT=port;'
'UID=kyle_dev_ro;'
'PWD=password;')
databaseName = 'SELECT name FROM sys.databases'
cursor = cnxn.cursor();
cursor.execute(databaseName);
XdatabaseNames = cursor.fetchall()
cursor.close()
dbNames= []
for row in XdatabaseNames:
rdict = {}
rdict["name"] = row[0]
dbNames.append(rdict)
#Starting CSV
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="Avonlea_file.csv"'
writer = csv.writer(response)
writer.writerow(['Unit', 'Balance'
])
for x in dbNames:
connect = pyodbc.connect('DRIVER={SQL Server};'
'SERVER=192.168.1.1;'
'PORT=1433;'
'Database=' + str(x) + ';'
'UID=kyle_dev_ro;'
'PWD=fh$sa#8d#7F8Y3;')
XaccAreas = " SELECT Account, DCBalance FROM [dbo].[Client] where iAgeingTermID = '3' AND DCBalance < 0 "
cursor = cnxn.cursor();
cursor.execute(XaccAreas);
accAreas = cursor.fetchall()
cursor.close()
for z in accAreas:
rdict = {}
rdict["Account"] = z[0]
rdict["Balance"] = z[1]
writer.writerow([
'',
x,
'',
])
writer.writerow([
rdict[0],
rdict[1],
])
return response
完全错误:
('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法打开登录请求的数据库“'name': 'master'”。登录失败。(4060) (SQLDriverConnect); [42000] [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性 (0);[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法打开数据库“'name': 'master'”登录。登录失败。(4060);[42000] [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性(0)')
当我在 Microsoft SQL Studio 上设置登录时,我确保所有需要勾选的“映射”数据库都已勾选,并且我的默认数据库设置为“主”
所以我不确定这个错误是否源于我给这个登录的权限?
解决方案
你犯了两个错误:
'Database=' + str(x) + ';'
应该是'Database=' + str(x["name"]) + ';'
因为您需要获取特定列,而不是整行- 无论如何,您可能想从查询中过滤掉系统数据库
select name
from sys.databases
where database_id > 4
推荐阅读
- ruby-on-rails - 功能测试在生产中工作但不在开发中
- javascript - 如何使用 java 脚本从网站获取文章、图像和现有链接的数量?
- node.js - Web3js 传输令牌
- ios - MSAL 不允许为目标 9.0 安装可可豆荚
- python - 在 Pandas Python 中形成之前检查组是否包含元素
- angular - 在 Angular 4 中创建新组件时出错
- java - 从 xml 移动到 Java 配置时出现 VirtualServerName 异常
- c# - Unity 移动实例化对象
- html - 用'display: block;'显示表格 在页面的中心
- hugo - 如何使用 Hugo 创建多个静态页面?