2010-04-13 3 views
17

Я пытаюсь получить все строки из таблицы.sqlalchemy, выберите все строки

В контроллере у меня есть:

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 без надлежащего экранирования. –

+0

Чтобы решить это, вы можете 'из флажка импортировать Markup', а затем' return Markup ("% r")% User.query.all() '. –

ответ

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 
Смежные вопросы