python - 使用变量访问 SQLAlchemy 表列名

标签 python mysql pandas sqlalchemy

我有一本类似的字典

{'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/

相关文章:

php - Laravel 5 使用外键插入行

python - 检查系列中的值是否出现在 df 列中的任何位置,且始终计算为 True

python - Pandas - 使用值列表创建较小的框架

MYSQL 在查询中包含 NULL

python - 在 scipy 优化中限制/最小化步长?

python - 使用 argparse 隐藏选定的子命令

python - 将列表列表中的特定索引值替换为相应的字典值

java - 在表中添加带有链接的新条目

python - key 错误 : <class 'pandas._libs.tslibs.timestamps.Timestamp' > when saving dataframe to excel

Python del() 内置不能用于赋值?