我有一个排序词典
{'category_id': 'women_shoes', 'product_id': 486778462L}
这里category_id是我在MYSQL数据库中的表名。我想从表women_shoes中获取指定的product_id。我能够通过这段代码实现这一目标
class_name = globals()[each_itemset["category_id"].capitalize()]
table_values = session.query(class_name).filter(class_name.product_id == each_itemset["product_id"])
for each in table_values:
print each.brand_name
name = "brand_name"
直到这里工作正常,我能够获得该产品的brand_name。我想要的是而不是发表声明
print each.brand_name
我想做
name = "brand_name"
print each.name
因为我不想自己指定确切的表名。我想从class_name。 table .columns.keys()获取表列名,并迭代它以获取每个列名并逐个提供它。
我这样做时出现以下错误
Traceback (most recent call last):
File "main_site.py", line 14, in <module>
json_data = db_access.get_styles_from_db("work")
File "C:\Python27\Projects\Clothe Studio Recommendation Project\util\db_access.py", line 149, in get_styles_from_db
calc_outfit_scores(outfit_dict, session)
File "C:\Python27\Projects\Clothe Studio Recommendation Project\util\db_access.py", line 192, in calc_outfit_scores
print each.name
AttributeError: 'Women_shoes' object has no attribute 'name'
我搜索了SQLAlchemy文档,但似乎没有找到答案。在这种情况下应该做些什么?感谢您的帮助。
答案 0 :(得分:1)
如果您只是尝试生成对象属性的字典:值,则可以使用内置的python对象属性dictionay __dict__
在你的情况下
for each in table_values:
print each.__dict__
如果您希望关注/使用任何外键或类似机制,则需要为该类实现自定义to_dict()
方法,并使用该方法
答案 1 :(得分:0)
您可以使用getattr以更通用的方式检索属性。
for each in table_values:
name = 'brand_name'
value = getattr(each, name)
print(value)