作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SQLAlchemy 模型开发我的第一个 Flask 应用程序,我有大约 10 个表示数据库表的类,并且这些类具有表示列的字段。
现在在我的 app.py
我正在尝试从数据库中选择数据并使其具有字典列表的形式(一个字典代表一行):[{'column_name1': 'data1', 'column_name2': 'data2', ...}, {'column_name1': 'data3', 'column_name2': 'data4', ...}, ...]
.
这是我想出的,但它不起作用:
column_names = table.__table__.columns.keys() # get columns names
records = table.query.whooshee_search(phrase).all() # get table records
DATA = []
for record in records:
row = {}
for column_name in column_names:
row[column_name] = record[column_name]
DATA.append(row)
table
早先被分配了一个类,然后
column_names
是一个字符串列表,这些字符串是此类中定义的列的名称。
records
是
table
的列表代表选定行的类对象(包含
phrase
)。我检查了在
html
中显示结果这工作正常并返回应该返回的内容。
table
值指定列名,而是使用
column_names
)。线路
row[column_name] = record[column_name]
似乎是问题 - 我得到了错误
TypeError: 'User' object is not subscriptable
User
是类之一(
table
的当前值)。
row[column_name] = record.column_name
是我的另一种(愚蠢的)方法,当然也不起作用。最后要提到的是
{{ record[column_name] }}
是
Jinja2
我在
html
中显示结果时使用的语法.
最佳答案
使用 Flask-SQLAlchemy
定义的模型不包含 __getitem__(self, key)
方法默认,因此你不能做 table["some_key"]
.
一种方法是明确定义 __getitem__(self, key)
模型定义中的方法。这是它的一个工作示例。
class User:
def __init__(self):
self.member = 0
def __getitem__(self, field):
return self.__dict__[field]
user = User()
print(user.member) # 0
print(user["member"]) # 0
关于python - 隐式访问SQLAlchemy类字段并修复 'object is not subscriptable'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59011757/
我是一名优秀的程序员,十分优秀!