2010-04-13 64 views
17

我想从表中获取所有行。sqlalchemy,选择所有行

在控制器I具有:

meta.Session.query(User).all() 

结果是[, ],但是我有在该表2点的行。

我使用的这款型号为表:

import hashlib 
import sqlalchemy as sa 
from sqlalchemy import orm 

from allsun.model import meta 

t_user = sa.Table("users",meta.metadata,autoload=True) 

class Duplicat(Exception): 
    pass 
class LoginExistsException(Exception): 
    pass 
class EmailExistsException(Exception): 
    pass 

而接下来,在同一个文件:

class User(object): 
    def loginExists(self): 
     try: 
      meta.Session 
       .query(User) 
       .filter(User.login==self.login) 
       .one() 
     except orm.exc.NoResultFound: 
      pass 
     else: 
      raise LoginExistsException() 

    def emailExists(self): 
     try: 
      meta 
       .Session 
       .query(User) 
       .filter(User.email==self.email) 
       .one() 
     except orm.exc.NoResultFound: 
      pass 
     else: 
      raise EmailExistsException() 


    def save(self): 
     meta.Session.begin() 
     meta.Session.save(self) 
     try: 
      meta.Session.commit() 
     except sa.exc.IntegrityError: 
      raise Duplicat() 

orm.mapper(User, t_user) 

。 。 。 。 。 。 。 。

+7

没有足够的信息来重现您的问题。什么是[[]]?这不是有效的python表达式,而是看起来像是在没有正确转义它的情况下,在HTML上打印两个项目'[<用户实例在...>,<用户实例在...>]''的列表。 – 2010-04-14 03:46:39

+0

为了解决你可以'从瓶子导入标记'然后'返回标记(“%r”)%User.query.all()'。 – 2014-09-23 15:39:35

回答

25

您可以轻松导入模型,并运行此:

from models import User 

# User is the name of table that has a column name 
users = User.query.all() 

for user in users: 
    print user.name