Я прохожу это руководство по SQLAlchemy и очень запутался в следующем примере (примерно на полпути вниз по странице):
>>> s = select([(users.c.fullname + ", " + addresses.c.email_address).label('title')],
... and_(
... users.c.id==addresses.c.user_id,
... users.c.name.between('m', 'z'),
... or_(
... addresses.c.email_address.like('%@aol.com'),
... addresses.c.email_address.like('%@msn.com')
... )
... )
... )
>>> print conn.execute(s).fetchall()
SELECT users.fullname || ? || addresses.email_address AS title
FROM users, addresses
WHERE users.id = addresses.user_id AND users.name BETWEEN ? AND ? AND
(addresses.email_address LIKE ? OR addresses.email_address LIKE ?)
(', ', 'm', 'z', '%@aol.com', '%@msn.com')
[(u'Wendy Williams, wendy@aol.com',)]
Как (users.c.fullname + ", " + addresses.c.email_address)
определяет столбцы для выбора - не значит ли это, что он ищет столбцы с заголовком "fullname, email_address"
? Я явно что-то неправильно понимаю. Результат [(u'Wendy Williams, wendy@aol.com',)]
соответствует формату строки, заданной для SELECT. Я просто не понимаю, как это работает.
Никогда не делал базы данных раньше; Я изучаю SQLAlchemy одновременно с изучением SQL, поэтому вполне возможно, что моя проблема с SQL, а не с SQLAlchemy.