2010-04-13 12 views
17

Ich versuche, alle Zeilen aus einer Tabelle zu bekommen.sqlalchemy, wählen Sie alle Zeile

In Controller ich habe:

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

Das Ergebnis [, ] ist, aber ich habe zwei Zeilen in dieser Tabelle.

Ich benutze dieses Modell für die Tabelle:

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 

und als nächste in der gleichen Datei:

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

Es gibt nicht genügend Informationen ist Ihr Problem zu reproduzieren. Was ist "[,]"? Es ist kein gültiger Python-Ausdruck, aber es sieht so aus, als ob Sie eine Liste von zwei Elementen '[, ]' auf HTML drucken, ohne sie ordnungsgemäß zu umgehen. –

+0

Um das zu lösen, können Sie 'from flask import Markup' und dann' return Markup ("% r")% User.query.all() '. –

Antwort

25

Sie können ganz einfach Ihr Modell importieren und diese auszuführen:

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