Python의 팬더 read_sql_query

Manav Narula 2023년6월21일
Python의 팬더 read_sql_query

SQL은 관계형 데이터베이스 관리 시스템에서 데이터베이스를 만들고 유지 관리하는 데 사용되는 프로그래밍 언어입니다. Python을 사용하여 많은 데이터베이스 응용 프로그램을 만들 수 있습니다.

SQLite, SQLAlchemy 등과 같은 여러 라이브러리를 사용하여 장치에 설치된 SQL 애플리케이션에 대한 연결을 생성할 수 있습니다.

Python에서는 pandas 라이브러리를 사용하여 테이블을 DataFrame 개체로 저장할 수 있습니다. 이 라이브러리를 사용하여 SQL 쿼리도 사용할 수 있습니다.

이 튜토리얼은 pandas.read_sql_query() 함수를 사용하여 SQL 쿼리에서 결과를 읽는 방법을 보여줍니다.

Python Pandas read_sql_query

pandas.read_sql_query() 함수를 사용하여 쿼리의 결과를 DataFrame으로 직접 읽을 수 있습니다. 이 기능을 사용하려면 SQL 데이터베이스에 대한 연결을 생성해야 합니다.

이 예에서는 sqlite3 라이브러리를 사용합니다. 이 라이브러리를 사용하여 SQLite 데이터베이스 응용 프로그램을 사용할 수 있습니다.

connect() 메서드는 연결을 생성하는 데 사용되며 이 함수에는 데이터베이스 이름이 제공됩니다. 연결을 생성하고 SELECT 문을 실행하여 DataFrame에 데이터를 로드합니다.

아래 코드를 참조하십시오.

import pandas as pd
import sqlite3

connection = sqlite3.connect("delftstack.db")
crsr = connection.cursor()
ct_sql = """CREATE TABLE data3 (
number INTEGER,
name VARCHAR(20));"""
crsr.execute(ct_sql)
crsr.execute("""INSERT INTO data3 VALUES (1, "GEORGE");""")
crsr.execute("""INSERT INTO data3 VALUES (2, "KEVIN");""")
df = pd.read_sql_query("""SELECT number,name FROM data3""", con=connection)
print(df)
connection.close()

출력:

   number    name
0       1  GEORGE
1       2   KEVIN

위의 예에서는 delftstack.db 데이터베이스의 data1 테이블에서 데이터를 읽습니다. 쿼리 결과는 df DataFrame에 저장됩니다.

이 기능과 함께 몇 가지 편리한 매개변수를 사용할 수도 있습니다. index_col 매개변수는 DataFrame의 인덱스를 지정하는 데 사용되며 열 이름은 columns 매개변수와 함께 제공될 수 있습니다.

coerce_float 매개변수는 숫자가 아닌 문자열이 아닌 값을 부동 소수점 숫자로 변환할 수 있습니다.

여기서 가장 유용한 매개변수는 chunksize 매개변수입니다. SQL에서 거대한 테이블과 데이터 세트를 접할 수 있습니다.

따라서 한 번에 DataFrame으로 읽으면 내부적으로 많은 메모리가 소비됩니다. 지정된 행의 데이터 청크를 생성하는 chunksize 매개변수를 사용하면 이를 방지할 수 있습니다.

반복할 수 있고 데이터 작업에 사용할 수 있는 청크의 반복자 개체를 만듭니다.

pandas.read_sql은 SQL 쿼리 결과를 DataFrame으로 읽을 수 있는 pandas 라이브러리에서 사용할 수 있는 또 다른 함수입니다. 그러나 이는 이전 버전과의 호환성을 위해 read_sql_queryread_sql_table 기능을 둘러싼 래퍼일 뿐입니다.

pandas.read_sql() 함수가 SQL 쿼리를 만날 때마다 이 자습서에서 설명한 read_sql_query 함수로 라우팅됩니다.

이 함수의 대안은 fetchall() 함수를 사용하는 것입니다. 이 함수는 SQL 쿼리 결과의 모든 행을 가져옵니다.

SELECT 문을 실행하여 행을 인쇄하고 이 함수를 사용하여 행을 검색하고 pandas.DataFrame 생성자를 사용하여 DataFrame에 저장합니다.

다음 예를 참조하십시오.

import pandas as pd
import sqlite3

connection = sqlite3.connect("delftstack.db")
crsr = connection.cursor()
ct_sql = """CREATE TABLE data4 (
number INTEGER,
name VARCHAR(20));"""
crsr.execute(ct_sql)
crsr.execute("""INSERT INTO data4 VALUES (1, "GEORGE");""")
crsr.execute("""INSERT INTO data4 VALUES (2, "KEVIN");""")
crsr.execute("""SELECT number,name FROM data4""")
df_new = pd.DataFrame(crsr.fetchall(), columns=["number", "name"])
print(df_new)
connection.close()

출력:

   number    name
0       1  GEORGE
1       2   KEVIN
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Pandas SQL