Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和flask sqlalchemy,如何使用动态变量作为列名从表中返回值?_Python_Flask Sqlalchemy - Fatal编程技术网

使用python和flask sqlalchemy,如何使用动态变量作为列名从表中返回值?

使用python和flask sqlalchemy,如何使用动态变量作为列名从表中返回值?,python,flask-sqlalchemy,Python,Flask Sqlalchemy,从我的数据库表中,我想返回多个值。每个值位于不同的行和列中 我使用for循环返回每一行。在每次循环中,我都能成功地将“年”值存储在字典中(state\u year\u dict)。这是因为“year”是我表中的一个列名 states = ['alabama', 'alaska', 'arizona', ... 'wisconsin', 'wyoming'] state_year_dict = {} state_total_dict = {} chosen_name = NameCounts.qu

从我的数据库表中,我想返回多个值。每个值位于不同的行和列中

我使用for循环返回每一行。在每次循环中,我都能成功地将“年”值存储在字典中(state\u year\u dict)。这是因为“year”是我表中的一个列名

states = ['alabama', 'alaska', 'arizona', ... 'wisconsin', 'wyoming']
state_year_dict = {}
state_total_dict = {}
chosen_name = NameCounts.query.filter_by(name=name, gender=gender)
for state in states:
    state_high = chosen_name.order_by(getattr(NameCounts, state).desc()).first()
    state_year_dict[state] = state_high.year
在同一个循环中,我希望存储循环中当前使用的“状态”中的值。但是,我不知道如何使用变量“state”来获取所需的值。这里有两个我尝试过的不起作用的例子。它们生成一个属性错误,表示模型没有属性“state”或“getattr”

state_total_dict[state] = state_high.state
state_total_dict[state] = state_high.getattr(BabyNameCountsA, state)

我到处寻找答案,运气不好。如果有任何见解,我将不胜感激。

通过进一步研究,我找到了解决问题的方法。问题行现在显示:

state_total_dict[state] = getattr(state_high, state)

您在
order\u by()
方法调用中正确使用了
getattr()
函数。仔细看看它的作用。旁注:可能有一种更有效的方法来获取您现在生成的数字,作为一个SQL查询,而不是每个状态单独查询。@MartijnPieters感谢您的提示。再多做一点研究,我就解决了这个问题。至于更有效地检索数字的方法,我正在学习。你能告诉我该往哪里看吗?因为你没有分享任何关于模式的细节,所以在那里帮助你有点困难。这是一个包含
year
和per state列,以及
name
gender
的表,并且您希望找到“state”列最高的对应年份吗?这还取决于使用的特定sql server,以了解是否支持数据透视。