osito de goma
Estoy tratando de obtener todas las filas de una tabla.
En el controlador tengo:
meta.Session.query(User).all()
El resultado es [, ]
pero tengo 2 filas en esta tabla.
Yo uso este modelo para la mesa:
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
Y a continuación, en el mismo archivo:
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)
nima soroush
Puede importar fácilmente su modelo y ejecutar esto:
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
-
¿Cuál es la diferencia entre usar este código y usar ´session.query(SomeTable).all()´?
– Programas
24 de julio de 2019 a las 19:59
-
Creo que ‘User.query.all()’ usa core. Donde ´session.query(AlgunaTabla).all()´ es ORM
– Shoopyman
12 de enero de 2020 a las 3:39
-
NOTA: esta sintaxis, por lo que puedo ver en los documentos, solo está disponible usando Flask-SQLAlchemy, no SQLAlchemy directamente, que usa
select(User)
función– Ozzy El Gigante
13 oct 2021 a las 19:37
-
Cuando sigues adelante y haces
print(user)
. Lo imprime en el formato<TableName primary_key>
. Pensé que esto podría ayudar si te lo estás preguntando. Accede a una determinada entrada de columna por fila, puede hacerprint(user.column_name)
. ¡Que tengas un buen día!– Muneeb Ahmad Khurram
16 de enero de 2022 a las 19:53
Gardazi de oveja
Uso el siguiente fragmento para ver todas las filas de una tabla. Use una consulta para encontrar todas las filas. Los objetos devueltos son las instancias de clase. Se pueden utilizar para ver/editar los valores según sea necesario:
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()
No hay suficiente información para reproducir su problema. Qué es
[, ]
? No es una expresión de Python válida, sino que parece que está imprimiendo una lista de dos elementos[<User instance at ...>, <User instance at ...>]
en HTML sin escapar correctamente.– Denis Otkidach
14 de abril de 2010 a las 3:46
Para resolver eso puedes
from flask import Markup
y luegoreturn Markup("%r") % User.query.all()
.– Dr. Jan-Philip Gehrcke
23/09/2014 a las 15:39