Python 莫名其妙地访问SQLAlchemy类字段并修复';对象不可下标';错误
我正在使用SQLAlchemy模型开发我的第一个Flask应用程序,我有大约10个表示数据库表的类,这些类有表示列的字段 现在,在我的Python 莫名其妙地访问SQLAlchemy类字段并修复';对象不可下标';错误,python,flask,sqlalchemy,jinja2,flask-sqlalchemy,Python,Flask,Sqlalchemy,Jinja2,Flask Sqlalchemy,我正在使用SQLAlchemy模型开发我的第一个Flask应用程序,我有大约10个表示数据库表的类,这些类有表示列的字段 现在,在我的app.py中,我试图从数据库中选择数据,并使其具有字典列表的形式(一个字典代表一行): [{'column\u name1':'data1','column\u name2':'data2',…},{'column\u name1':'data3','column\u name2':'data4',…},…},…] 这是我想到的,但它不起作用: column\u
app.py
中,我试图从数据库中选择数据,并使其具有字典列表的形式(一个字典代表一行):
[{'column\u name1':'data1','column\u name2':'data2',…},{'column\u name1':'data3','column\u name2':'data4',…},…},…]
这是我想到的,但它不起作用:
column\u names=table.\u table\u.columns.keys()#获取列名称
records=table.query.whooshee_search(短语).all()#获取表记录
数据=[]
记录中的记录:
行={}
对于列名称中的列名称:
行[列名称]=记录[列名称]
DATA.append(行)
表
先前被指定为一个类,然后列名称
是一个字符串列表,这些字符串是在该类中定义的列的名称<代码>记录是表示选定行(包含短语
)的表
类对象的列表。我检查了在html
中显示结果是否正常,并返回所需返回的内容
但是,我希望将它们作为一个动态创建的字典(这样我就不必为每个可能的表
值指定列名,而是使用列名
)。行[column\u name]=记录[column\u name]似乎是问题所在-我发现了错误
TypeError:“用户”对象不可订阅
其中,
用户
是其中一个类(表的当前值)<代码>行[column\u name]=记录。column\u name是我的另一个(愚蠢的)方法,当然也不起作用。最后要提到的是,{{record[column\u name]}
是我在html
中显示结果时使用的语法,使用Flask-SQLAlchemy
定义的模型默认情况下不包含\u-getitem\uuuuuuuuuuu(self,key)
方法,因此您不能执行表[“some\u-key”
一种方法是在模型定义中显式定义\uuu getitem\uuu(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
资料来源:
所以这个\uuu getitem\uuuu(self,key)
方法需要为每个类定义一次,或者为每个类字段单独定义一次?好的,我在我的项目中尝试了一下,它完全按照我希望的方式工作,非常感谢@θ您需要在您拥有的每个模型上定义此\uuuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。也许试着做点像这样的事