我正在尝试使用MySQL表来存储报表定义的属性。由于每个报告使用不同的属性,我想要存储三列 - report_name,attribute,attribute_value。python - 如何创建变量并从数据表中设置其值
我想查询表的report_name并获取相关的属性和attribute_values。我已经在其他问题看出,人们可以使用
exec("%s = %s" % (row[0], (row[1],)))
动态设置变量的名称(行[0]是属性,行[1]是ATTRIBUTE_VALUE)。我的问题是,结果是变量是元组。
title_text = ('Daily PnL',)
title_text是属性。 '每日PnL'是attribute_value。
我不能简单地说
exec("%s = %s" % (row[0], row[1]))
我得到的错误是:
Traceback (most recent call last):
File "C:\...\test_dynamic_variables.py", line 17, in <module>
exec("%s = %s" % (row[0], row[1]))
File "<string>", line 1, in <module>
NameError: name 'Daily PnL' is not defined
这里是更大的一组代码:
import mysql.connector
from mysql.connector import errorcode
cnx = mysql.connector.connect(user='xxxx', password='xxxx', database='xxxx')
cursor = cnx.cursor()
query = ("SELECT attribute, attribute_value FROM reports WHERE report_name = %s")
report_name = 'Daily'
try:
cursor.execute(query, (report_name,))
except mysql.connector.Error as err:
print(err.msg)
row = cursor.fetchone()
while row is not None:
exec("%s = %s" % (row[0], row[1]))
row = cursor.fetchone()
print(title_text) #test if works
感谢您帮帮我。
ok。只是想出了如何正确格式化。抱歉的混淆。 – Andrew