Подтвердить что ты не робот

SELECT * в sqlalchemy?

Можно ли сделать SELECT * в sqlalchemy?

Edit:

В частности, SELECT * WHERE foo=1

4b9b3361

Ответ 1

Неужели никто не чувствует любовь ORM к SQLALchemy сегодня? Представленные ответы правильно описывают интерфейс нижнего уровня, который предоставляет SQLAlchemy. Просто для полноты это более вероятная (для меня) ситуация в реальном мире, где у вас есть экземпляр сеанса и класс User, который orm сопоставлен с таблицей пользователей.

for user in session.query(User).filter_by(name='jack'):
     print user
     # ...

И это делает явный выбор во всех столбцах.

Ответ 2

Следующий выбор работает для меня в основном языке выражений (возвращает объект RowProxy):

foo_col = sqlalchemy.sql.column('foo')
s = sqlalchemy.sql.select(['*']).where(foo_col == 1)

Ответ 3

Где Бар - это класс, сопоставленный с вашей таблицей, а сеанс - это ваш сеанс sa:

bars = session.query(Bar).filter(Bar.foo == 1)

Ответ 4

Если вы не указали какие-либо столбцы, вы получите их все.

query = users.select()
query = query.where(users.c.name=='jack')
result = conn.execute(query)
for row in result:
    print row

Должен работать.

Ответ 5

Для объединений, если столбцы не определены вручную, возвращаются только столбцы целевой таблицы. Чтобы получить все столбцы для объединений (Таблица пользователей, объединенная с Групповой таблицей:

sql = User.select(from_obj(Group, User.c.group_id == Group.c.id))
# Add all coumns of Group table to select
sql = sql.column(Group)
session.connection().execute(sql)

Ответ 6

Оказывается, вы можете:

sa.select('*', ...)

Ответ 7

Вы также можете использовать необработанный SQL:

str_sql = sql.text("YOUR STRING SQL")
#if you have some args:
args = {
    'myarg1': yourarg1
    'myarg2': yourarg2}
#then call the execute method from your connection
results = conn.execute(str_sql,args).fetchall()

Ответ 8

Если вы используете ORM, вы можете построить запрос, используя обычные ORM-конструкции, а затем выполнить его напрямую, чтобы получить значения raw-столбца:

query = session.query(User).filter_by(name='jack')
for cols in session.connection().execute(query):
    print cols