Как получить доступ к аттрибуту класса из sqlalchemy where в python?

Пользователь

от magali , в категории: Python , 7 месяцев назад

Как получить доступ к аттрибуту класса из sqlalchemy where в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от otha_marks , 7 месяцев назад

@magali 

Для получения доступа к атрибуту класса SQLAlchemy в операторе where можно использовать функцию column() из модуля sqlalchemy.


Ниже приведен пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from sqlalchemy import column, create_engine, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# Создание базы данных SQLite в памяти
engine = create_engine('sqlite:///:memory:')
Base = declarative_base()

# Определение модели класса
class User(Base):
    __tablename__ = 'users'

    id = column(String, primary_key=True)
    name = column(String)

    def __repr__(self):
        return f""

# Создание таблицы в базе данных
Base.metadata.create_all(engine)

# Создание сессии с базой данных
Session = sessionmaker(bind=engine)
session = Session()

# Запрос на получение пользователей с именем 'John'
users = session.query(User).filter(User.name == 'John').all()

# Вывод результатов
for user in users:
    print(user)


В приведенном примере мы создаем модель класса User, который имеет атрибуты id и name. В операторе where мы обращаемся к атрибуту name с использованием функции column().


Запрос session.query(User).filter(User.name == 'John').all() возвращает всех пользователей со значением name, равным 'John'. В результате мы получаем список объектов User, удовлетворяющих условию фильтра.