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)
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
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()