#python #sqlalchemy
Вопрос:
Как мне выбрать все последние элементы фактуры, я знаю, что могу использовать цикл for, но я думал, что будет более быстрый способ выбора с помощью SQLAlchemy. Я хочу [99,15,90,20,16,14,100]
gt;gt;gt; Facture.numero_facture lt;sqlalchemy.orm.attributes.InstrumentedAttribute object at 0x0000025640056770gt; gt;gt;gt; Facture.query.all() [Facture('Photographe', '2021-11-01', 99), Facture('Auchan', '2021-11-02', 15), Facture('Auchan', '2021-11-01', 90), Facture('test', '2021-11-01', 20), Facture('a', '2021-11-01', 16), Facture('Auchan', '2021-11-01', 14), Facture('g', '2021-11-10', 100)] class Facture(db.Model): # import datetime # today = datetime.datetime.today() # date = today.strftime('%Y-%m-%d') # Créer une database où on va ajouter du code chaque fois id = db.Column(db.Integer(),primary_key=True) numero_facture = db.Column(db.Integer(), unique=True) date = db.Column(db.String(), nullable=False) nom_societe = db.Column(db.String(length=200), nullable=False) adresse = db.Column(db.String(length=200), nullable=False) code_postal = db.Column(db.Integer(),nullable=True) ville = db.Column(db.String(), nullable=True) items = db.relationship("Item", backref="facture", lazy=True) def __repr__(self): # return f"Facture_details('{self.numero_facture}', '{self.date}, '{self.nom_societe}, '{self.adresse}, '{self.code_postal}, '{self.ville})" # return f"Facture_details('{self.nom_societe}', '{self.date})" return f"Facture('{self.nom_societe}', '{self.date}', {self.numero_facture})"
Ответ №1:
gt;gt;gt; Facture.query[0:5] gt;gt;gt; Facture.query[-5:]
Но как вы узнаете, какие из них последние? Возможно, вы захотите добавить какой-то заказ_бы, возможно, что-то вроде:
gt;gt;gt; Facture.query.order_by(Facture.date.desc)[0:5]
Хорошо, как я понимаю, теперь вам нужна только одна колонка. У вас где — то есть объект сеанса-я не вижу, чтобы он был в вашем коде. Это flask_sqlalchemy? Тогда вы можете сделать:
session.query(Facture.numero_facture)[0:5]
Комментарии:
1. Это было не то, что я искал, но это хорошо, я понятия не имел, что смогу выбрать их таким образом!
2. Что вы тогда искали?
3. Извините, кажется, я не могу написать здесь какой-то код. Но если бы был какой-либо способ, я мог бы использовать SQLAlchemy для создания того же вывода из этого кода :
all = Facture.query.all() facture_list = [] for facture_temp in all: facture_list.append(facture_temp.numero_facture)
gt;gt;gt;gt;gt;gt; facture_list [99, 15, 90, 20, 16, 14, 100]4. Обновил ответ.
5. Спасибо! Это сработало gt;gt;gt;gt;gt;gt; db.session. запрос(Фактура.число_фактура).все() [(14,), (15,), (16,), (20,), (90,), (99,), (100,), (101,), (102,), (103,), (104,), (105,), (106,)]