logo

Python SQLAlchemy – 필터가 있는 func.count

이 기사에서는 Python의 PostgreSQL 데이터베이스에 대해 SQLAlchemy의 count 함수를 사용하여 필터 작업을 수행하는 방법을 살펴보겠습니다.

필터 작업을 사용한 계산은 다양한 기능을 사용하여 다양한 방법으로 수행됩니다. 이러한 종류의 수학적 연산은 데이터베이스에 따라 다릅니다. PostgreSQL에서는 count()라는 함수를 사용하여 카운트를 수행하고, filter()를 사용하여 필터 연산을 수행합니다. SQLAlchemy에서 SUM, MIN, MAX와 같은 일반 함수는 func 속성을 사용하여 기존 SQL 함수처럼 호출됩니다.



SQLAlchemy에서 사용되는 몇 가지 일반적인 함수는 count, Cube, current_date, current_time, max, min, mode 등입니다.

용법: func.count(). func.group_by(), func.max()

데모용 테이블 생성

SQLAlchemy 패키지에서 필요한 기능을 가져옵니다. 아래와 같이 create_engine() 함수를 사용하여 PostgreSQL 데이터베이스와의 연결을 설정하고 book_id 및 book_price 열이 있는 books라는 테이블을 만듭니다. 표시된 대로 insert() 및 value() 함수를 사용하여 테이블에 레코드를 삽입합니다.



파이썬3






for 루프 자바

# import necessary packages> import> sqlalchemy> from> sqlalchemy>import> create_engine, MetaData, Table,> Column, Numeric, Integer, VARCHAR> from> sqlalchemy.engine>import> result> > # establish connections> engine>=> create_engine(> >'database+ dialect://username:password@host:port/databasename '>)> > # initialize the Metadata Object> meta>=> MetaData(bind>=>engine)> MetaData.reflect(meta)> > # create a table schema> books>=> Table(> >'books'>, meta,> >Column(>'bookId'>, Integer, primary_key>=>True>),> >Column(>'book_price'>, Numeric),> >Column(>'genre'>, VARCHAR),> >Column(>'book_name'>, VARCHAR)> )> > meta.create_all(engine)> # insert records into the table> statement1>=> books.insert().values(bookId>=>1>, book_price>=>12.2>,> >genre>=> 'fiction'>,> >book_name>=> 'Old age'>)> statement2>=> books.insert().values(bookId>=>2>, book_price>=>13.2>,> >genre>=> 'non-fiction'>,> >book_name>=> 'Saturn rings'>)> statement3>=> books.insert().values(bookId>=>3>, book_price>=>121.6>,> >genre>=> 'fiction'>,> >book_name>=> 'Supernova'>)> statement4>=> books.insert().values(bookId>=>4>, book_price>=>100>,> >genre>=> 'non-fiction'>,> >book_name>=> 'History of the world'>)> statement5>=> books.insert().values(bookId>=>5>, book_price>=>1112.2>,> >genre>=> 'fiction'>,> >book_name>=> 'Sun city'>)> > # execute the insert records statement> engine.execute(statement1)> engine.execute(statement2)> engine.execute(statement3)> engine.execute(statement4)> engine.execute(statement5)>

>

>

산출:

샘플 테이블

SQLAlchemy에서 GroupBy 및 개수 구현

groupby 함수 작성에는 아래 표시된 기존 SQL 쿼리의 절차와 약간 다른 절차가 있습니다.

sqlalchemy.select([

테이블이름.c.열_이름,

sqlalchemy.func.count(테이블명.c.column_name)

]).group_by(Tablename.c.column_name).filter(Tablename.c.column_name 값)

데이터베이스에 연결하는 동안 초기화된 Metadata 개체에서 books 테이블을 가져옵니다. 실행() 함수에 SQL 쿼리를 전달하고 fetchall() 함수를 사용하여 모든 결과를 가져옵니다. for 루프를 사용하여 결과를 반복합니다.

아래 쿼리는 가격이 Rs보다 큰 다양한 장르의 도서 수를 반환합니다. 50.

자바스크립트의 콜백 지옥

파이썬3




# Get the `books` table from the Metadata object> BOOKS>=> meta.tables[>'books'>]> > # SQLAlchemy Query to GROUP BY and filter function> query>=> sqlalchemy.select([> >BOOKS.c.genre,> >sqlalchemy.func.count(BOOKS.c.genre)> ]).group_by(BOOKS.c.genre).>filter>(BOOKS.c.book_price>>50.0>)> > # Fetch all the records> result>=> engine.execute(query).fetchall()> > # View the records> for> record>in> result:> >print>(>' '>, record)>

>

>

산출:

Count 및 filter 함수의 출력