我正在尝试找到一种方法将自变量名称分配给字典中的不同项目。问题是,所有项目都使用相同的 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/