在Python中,您可以使用字符串类型作为变量名,但是必须使用方括号将字符串变量名括起来。例如:
dblist = ('database1', 'database2', 'database3', 'database4', 'database5', 'database6', 'database7')
for db in dblist:
cursor = conn.cursor()
cursor.execute("select SYSTEM from automation/awdclient where db = " + "'" + db + "'" + "")
for row in cursor:
exec(f"activesystem.{db} = row[0]")
cursor.close()
conn.close()
print("activesystem.database1:", activesystem.database1)
print("activesystem.database2:", activesystem.database2)
在上面的代码中,我们使用exec()函数动态地执行Python代码。exec()函数接收一个字符串作为参数,并将其作为Python代码执行。因此,我们在exec()函数中使用f字符串来动态地生成Python代码,以便为activesystem对象动态地添加属性。
解决方案
- 使用
exec()函数: 您可以使用exec()函数动态地执行Python代码。exec()函数接收一个字符串作为参数,并将字符串作为Python代码执行。因此,您可以在字符串中使用db变量来动态地生成变量名和赋值语句。
例如:
dblist = ('database1', 'database2', 'database3', 'database4', 'database5', 'database6', 'database7')
for db in dblist:
cursor = conn.cursor()
cursor.execute("select SYSTEM from automation/awdclient where db = " + "'" + db + "'" + "")
for row in cursor:
exec(f"activesystem.{db} = row[0]")
cursor.close()
conn.close()
print("activesystem.database1:", activesystem.database1)
print("activesystem.database2:", activesystem.database2)
- 使用
setattr()函数: 您也可以使用setattr()函数动态地为对象添加属性。setattr()函数接收三个参数:对象、属性名和属性值。因此,您可以使用setattr()函数来动态地为activesystem对象添加具有db变量值的属性。
例如:
dblist = ('database1', 'database2', 'database3', 'database4', 'database5', 'database6', 'database7')
for db in dblist:
cursor = conn.cursor()
cursor.execute("select SYSTEM from automation/awdclient where db = " + "'" + db + "'" + "")
for row in cursor:
setattr(activesystem, db, row[0])
cursor.close()
conn.close()
print("activesystem.database1:", activesystem.database1)
print("activesystem.database2:", activesystem.database2)
- 使用
vars()函数: 您也可以使用vars()函数获取对象的属性字典。vars()函数接收一个对象作为参数,并返回一个包含该对象所有属性的字典。因此,您可以使用vars()函数来获取activesystem对象的属性字典,然后使用{}操作符动态地为该字典添加新属性。
例如:
dblist = ('database1', 'database2', 'database3', 'database4', 'database5', 'database6', 'database7')
for db in dblist:
cursor = conn.cursor()
cursor.execute("select SYSTEM from automation/awdclient where db = " + "'" + db + "'" + "")
for row in cursor:
vars(activesystem)[db] = row[0]
cursor.close()
conn.close()
print("activesystem.database1:", activesystem.database1)
print("activesystem.database2:", activesystem.database2)
代码例子
以下代码演示了如何在Python中动态地为变量名赋值:
dblist = ('database1', 'database2', 'database3', 'database4', 'database5', 'database6', 'database7')
for db in dblist:
cursor = conn.cursor()
cursor.execute("select SYSTEM from automation/awdclient where db = " + "'" + db + "'" + "")
for row in cursor:
exec(f"activesystem.{db} = row[0]")
cursor.close()
conn.close()
print("activesystem.database1:", activesystem.database1)
print("activesystem.database2:", activesystem.database2)
在上面的代码中,我们使用exec()函数动态地执行Python代码。exec()函数接收一个字符串作为参数,并将字符串作为Python代码执行。因此,我们在exec()函数中使用f字符串来动态地生成Python代码,以便为activesystem对象动态地添加属性。
输出:
activesystem.database1: system1
activesystem.database2: system2