python - 将变量分配给具有相同键的字典项

标签 python sql-server python-2.7 dictionary pymssql

我正在尝试找到一种方法将自变量名称分配给字典中的不同项目。问题是,所有项目都使用相同的 key 。我正在使用 PYMSSQL 查询数据库服务器以获取数据库名称列表。

conn = pymssql.connect(DBServer, DBUser, DBPass, 'master')
cursor = conn.cursor(as_dict=True)
##print 'On the following prompt, please enter the SQL command you wish to execute.'
##query = raw_input(">>")
cursor.execute("""
Select name from msdb.sys.databases
""")
for row in cursor:
    print row
    print '-----------------------------'

conn.close()

这给了我一个输出:

{u'name': u'master'}
-----------------------------
{u'name': u'tempdb'}
-----------------------------
{u'name': u'model'}
-----------------------------
{u'name': u'msdb'}
-----------------------------
{u'name': u'MIADMS'}
-----------------------------
{u'name': u'Active'}
-----------------------------

如您所见,每个项目都位于相同的 name 键下。我想做的是为每个条目分配一个特定的变量,例如:

DB1 = master
DB2 = tempdb
DB3 = mode1
DB4 = msdb
etc...

我的最终目标是为用户提供对哪个数据库运行进一步查询的选择。

最佳答案

正是您所要求的:

for row in enumerate(cursor):
    exec("DB{0} = row[1][u'name']".format(row[0] + 1))

这将动态创建变量 DB1、DB2、...、DBn

但实际上你可能想要:

x = {"DB{0}".format(row[0] + 1): row[1][u"name"] for row in enumerate(cursor)}

这实际上会创建一个带有键 DB1、DB2、...、DBn 和保存数据库名称的值的字典。

关于python - 将变量分配给具有相同键的字典项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502215/

相关文章:

python - 我对 python 中的这段代码断言失败

python - 高效地为高密度区域创建密度图,为稀疏区域创建点

sql-server - 是否可以在 SQL Server 2005/SQL Server 2008 的 XML 列中设置索引?

c# - WebAPI 防止竞争条件

python - 如何获得书 "Web Scraping with Python: Collecting Data from the Modern Web"第 7 章数据标准化部分中的相同结果

python - 迭代列表并在比较后删除元素

python - Django 说 : too many values to unpack (expected 2)

c# - 使用 EF Database First 的单表分层数据

python-2.7 - AttributeError: 'dict' 迭代集合字典时对象没有属性 (...)

python - 在 Python 类中声明全局变量