web-dev-qa-db-fra.com

Comment puis-je sélectionner toutes les lignes avec sqlalchemy?

J'essaie d'obtenir toutes les lignes d'une table.

Dans le contrôleur, j'ai:

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

Le résultat est [, ], mais j'ai 2 lignes dans ce tableau.

J'utilise ce modèle pour la table:

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

Et ensuite, dans le même fichier:

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)
29
gummmibear

Vous pouvez facilement importer votre modèle et exécuter ceci:

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
50
Nima Soroush

J'utilise l'extrait de code suivant pour afficher toutes les lignes d'un tableau. Utilisez une requête pour trouver toutes les lignes. Les objets renvoyés sont les instances de classe. Ils peuvent être utilisés pour afficher/modifier les valeurs selon les besoins:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Sequence
from sqlalchemy import String, Integer, Float, Boolean, Column
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'MyTable'
    id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
    some_col = Column(String(500))

    def __init__(self, some_col):
        self.some_col = some_col

engine = create_engine('sqlite:///sqllight.db', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

for class_instance in session.query(MyTable).all():
    print(vars(class_instance))

session.close()
4
Sheece Gardazi