Myself знакомство с sqlalchemy.I имеют MySQL запрос, как показано ниже:MySQL запросов к SQLAlchemy версии
SELECT COUNT(*) AS total, SUM(IF(sub = 'N', 1, 0)) AS NotSubscribed, SUM(IF(subscription = 'A', 1, 0)) AS 12Month, SUM(IF(subscription = 'HY', 1, 0)) AS 6Month, SUM(IF(subscription = 'M', 1, 0)) AS 1Month
FROM accounts
WHERE userID IS NOT NULL
Я пытаюсь написать версию SQLAlchemy этого.
users = Table('users',metadata,autoload=True)
userInfo = users.select([func.count(users.c.userID).label('Total'),
func.sum(users.c.sub == 'N').label('NotSubscribed'),
func.sum(users.c.sub == 'A').label('12Month'),
func.sum(users.c.sub =='HY').label('6Month'),
func.sum(users.c.sub == 'M').label('1Month')]).where(users.c.userID != None).execute()
Я кончаю с следующей ошибкой:
sqlalchemy.exc.ArgumentError: SQL expression object or string expected
Может кто-то помочь мне, где я неправильно. Если не сообщите мне, есть ли какие-либо хорошие руководства по sqlalchemy, кроме документации.
Благодаря
Что такое 'SUM (IF (..., 1, 0))' предполагается делать здесь? Общее количество для разных типов подписки? –
hi, bascially я пытаюсь получить общее количество пользователей от разных пользователей, подписавшихся на них. Я хочу удалить – troy
Почему бы просто не использовать 'SELECT-подписку, COUNT (userID) FROM учетных записей WHERE userID IS NOT NULL GROUPBY subscription' и сделать' total' сумма результирующих строк? Этот запрос будет намного легче на сервере запросов. –