我有一个sqlalchemy查询基本上像这样
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == _tableview1)
return [Data1 count];
else if (tableView == _tableview2)
return [Data2 count];
else if (tableView == _tableview3)
return [Data3 count];
return 0;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identify;
if(tableView == _tableview1)
identify = @"cell1";
else if(tableView == _tableview2)
identify = @"cell2";
else if(tableView == _tableview3)
identify = @"cell3";
table1_TableViewCell *cell = (table1_TableViewCell*)[tableView dequeueReusableCellWithIdentifier:identify];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"table1_TableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
if (tableView == _tableview1)
{
cell.textLabel.text = @"This is tableview-1";
}
else if (tableView == _tableview2)
{
cell.textLabel.text = @"This is tableview-2";
}
else if (tableView == _tableview3)
{
cell.textLabel.text = @"This is tableview-3";
}
return cell;
这应该打印这两行:
for row in session.query(Message).order_by(Message.ts):
print(row)
但它只打印其中一个。我可以按user1或user2过滤并单独获取每一行,但我无法获得这两行。我试图迭代所有行(650万)并处理每一行。但是像这样的时间戳类似的那些继续被跳过。
这是Message类:
ts | uts | user | message
----------------------------+------------+-------|---------------
2016-01-20 06:07:38.905547 | 1453270059 | user1 | REDACTED
2016-01-20 06:07:39.029675 | 1453270059 | user2 | REDACTED_UNIQUE
答案 0 :(得分:0)
我发现Message类出了什么问题。不知何故,primary_key从ts移到了uts。 sqlalchemy没有窒息我不正确的主键,但假设uts列中没有重复项(这是一个问题因为uts列不是唯一的)。将其移回ts(这是一个独特的列)修复了问题。 Message类应该是:
class Message(Base):
__tablename__ = 'log'
__init__ = Base.__init__
ts = Column(DateTime, primary_key=True)
uts = Column(BigInteger)
user = Column(String(24))
message = Column(String(512))
答案 1 :(得分:0)
我认为您需要添加对all()
http://docs.sqlalchemy.org/en/latest/orm/query.html
所有()
将此Query表示的结果作为列表返回。 这导致执行基础查询。