Python将数据库记录放在Namedtuple中
我正在尝试用python(2.7)编写一些代码,以实现以下目的:Python将数据库记录放在Namedtuple中,python,sql,sqlite,iteration,namedtuple,Python,Sql,Sqlite,Iteration,Namedtuple,我正在尝试用python(2.7)编写一些代码,以实现以下目的: 在sqlite中打开数据库 对数据库进行查询,得到一些结果。数据库有多个表,我需要来自不同表的记录: 数据库如下所示: data.db-->[表1[col1,col2,col3],表2[col1,col2,col3]] 反复浏览结果 对结果做些什么(例如,在记录中有一个需要解码的日期) 将所有记录存储在namedtuple中以供进一步访问 从现在起,我已经完成了第1、2、3和4部分,但我不知道如何将结果存储在命名的元组中。假设
- data.db-->[表1[col1,col2,col3],表2[col1,col2,col3]]
对于结果中的结果:
var1=table1.col1
var2=table2.col1
var3=表3.col1
(现在我想对变量做点什么,但这不是问题所在,将3个变量存储在一个命名的整数中)
namedtuple()
只不过是一个使用工厂函数生成的类:
SomeRowResult = namedtuple('SomeRowResult', 'var1 var2 var3')
这里的SomeRowResult
是一个类对象(tuple的子类),调用它将创建类的实例:
for result in results:
result = SomeRowResult(table1.col1, table2.col1, table3.col1)
如果希望获得这些结果的列表,则需要显式构建该列表:
all_results = []
for result in results:
result = SomeRowResult(table1.col1, table2.col1, table3.col1)
all_results.append(result)
谢谢你的回复。我添加了我的代码。有语法错误吗?因为它还不能正常工作。为了进行测试,我试图遍历“联系人”并打印结果,但结果显示:TypeError:“type”对象不可编辑。@user3013106:您发布的代码应该可以正常工作;您确定没有为代码中的任何位置的
联系人
分配任何其他内容吗?@user301306:另外,TypeObject
看起来与namedtuple
完全无关。这方面的追溯是什么?到底是哪一行代码引发了这个错误?不。我正在用以下代码进行测试:打印联系人返回:对于联系人中的行:打印行,它返回的是不可编辑的(对不起,我不知道如何将注释中的代码格式化为可读形式)@Rigel:是的,您可以循环查看所有结果
;每个项都是一个名为tuple的实例,包含您定义的所有属性。但是,不能在创建实例的类上循环。这就像试图循环使用dict
或tuple
来获取程序中创建的所有字典或tuple。Python不是这样工作的。
all_results = []
for result in results:
result = SomeRowResult(table1.col1, table2.col1, table3.col1)
all_results.append(result)