python - 如何创建变量并从数据表中设置其值

时间:2017-04-26 19:29:26

标签: python mysql

我正在尝试使用MySQL表来存储报告定义的属性。由于每个报告都使用不同的属性,我想存储三列 - report_name,attribute,attribute_value。

我想在表中查询report_name并获取相关属性和attribute_values。我在其他问题中看到过可以使用

exec("%s = %s" % (row[0], (row[1],))) 

动态设置变量名称(row [0]是属性,row [1]是attribute_value)。我的问题是,结果是生成的变量是元组。

title_text = ('Daily PnL',)

title_text是属性。 'Daily 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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我真的不知道我的问题是否正确,所以如果我的解决方案无法帮助您,请更好地解释一下,以便我可以帮助您。

如果你有

title_text = ('Daily PnL',)

尝试:

title_text = title_text[0]

将Tulpe转换为简单的字符串。如果你想要彼此分开(所以&#39;每日&#39;来自&#39; PnL&#39;)而不是仅仅使用title_text上的.split()方法。

答案 1 :(得分:0)

刚想通了。我需要&#39;&#39;在第二个%s附近,因为它是一个字符串。

exec("%s = '%s'" % (row[0], row[1]))