我有一本类似的字典
{'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"
到目前为止,一切正常,我可以获得产品的品牌名称。我想要的是,而不是给出声明
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 文档和 SO,但似乎没有找到答案。在这种情况下应该做什么?感谢您的帮助。
最佳答案
如果你只是想生成一个对象属性的字典:值,你可以使用内置的Python对象属性字典__dict__
就你的情况
for each in table_values:
print each.__dict__
如果您想要遵循/使用任何外键或类似机制,您将需要为该类实现一个自定义的 to_dict()
方法,并使用该方法
关于python - 使用变量访问 SQLAlchemy 表列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730186/