метка sqlalchemy - PullRequest
       7

метка sqlalchemy

0 голосов
/ 02 марта 2012

Я запутался, как функция .label (...) работает в SqlAlchemy.У меня есть запрос наподобие этого:

data = session.query(Coupon, func.isnull(Order.coupon_code).label("redeemed")) \
  .outerjoin((Order, Order.coupon_code == Coupon.coupon_code)) \
  .all()

Когда этот запрос выполняется, я вижу order.coupon_code как обработанный в результирующем запросе, но в строке возврата данных я получаю две вещиструктура купона и «0» или «1»).Выглядит примерно так:

[(Coupon:
  coupon_id = 1234
  etc 
  , 0),
 ... ]

Что бы я хотел, чтобы «0» или «1» были названы «погашенными» со значением «0» или «1».Примерно так:

[(Coupon:
  coupon_id = 1234
  etc 
  , 
  redeemed = 0),
 ... ]

Наверное, я не понимаю, что лейбл делает для меня, если что-нибудь.Если у кого-то есть какие-то советы или указания о том, как я могу получить данные так, как я думаю, это будет с благодарностью!

Спасибо, Даг

Ответы [ 2 ]

0 голосов
/ 05 марта 2012

Установите этот флажок

from sqlalchemy import create_engine

engine = create_engine('mysql://test:test@localhost/test', echo=True)
from sqlalchemy.orm import sessionmaker

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Date, Column, Integer


Base = declarative_base()



class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True, autoincrement=True)
    day = Column(Date, unique=True)


if __name__ == '__main__':

    Base.metadata.create_all(engine)
    Session = sessionmaker(engine)
    session = Session()

    a = session.query(User.day.label('test')).all()

    print "New Label :", a[0].test
    print "DIR :", dir(a[0])

При запуске сценария и последним оператором является dir первой строки.И там вы получите атрибут test.

0 голосов
/ 03 марта 2012

Вы можете отобразить вычисленные значения в атрибуты класса, используя column_property, что, кажется, ближе к тому, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...