Python/sqlite3

sqlite3 테이블에서 데이터를 검색하는 Python 예제코드

webnautes 2024. 3. 7. 21:17
반응형

sqlite3 테이블에서 데이터를 검색하는 Python 예제코드입니다.



2023. 11. 24   최초작성

2024. 3. 7  에러처리 코드 추가



기존에 작성된 다음 포스트에서 만든 데이터베이스 테이블을 사용하여 진행합니다.

 

sqlite3 테이블에 데이터 삽입하는 Python 예제코드

https://webnautes.tistory.com/2225 




import sqlite3


database_file_path = 'zodiac.db'  # 데이터베이스 파일 이름입니다.
table_name = 'zodiac'              # 테이블 이름입니다.


try:
    conn = sqlite3.connect(database_file_path)
    cursor = conn.cursor()
    print("Database connection successful!")
except sqlite3.Error as e:
    print(f"Database connection failed: {e}")
    exit()
# database_file_path에 위치한 SQLite 데이터베이스 파일에 연결을 시도합니다.
# 이 경로에 파일이 존재하지 않으면, 새 데이터베이스 파일을 생성합니다.
# 데이터베이스 파일에 연결이 성공하면 Connection 객체를 반환합니다.


cursor = conn.cursor()
# 데이터베이스에 SQL 쿼리를 실행할 때 사용되는 Cursor 객체를 반환합니다.
# 이 Cursor 객체를 사용하여 SQL 명령을 데이터베이스에 보내고, 결과를 받을 수 있습니다.


column_name = 'animal'
# 검색할 컬럼을 지정합니다.

search_term = '토끼'
# 지정한 컬럼에서 검색할 키워드를 지정합니다. 


query = f"SELECT * FROM {table_name} WHERE {column_name} LIKE ?"
# SELECT * FROM {table_name}
# table_name 변수에 지정된 테이블에서 모든 컬럼을 선택한다는 의미입니다.
#
# WHERE {column_name} LIKE ?
# column_name 변수에 지정된 컬럼에서 특정 패턴을 포함하는 레코드만을 필터링하라는 조건을 추가합니다.
# 여기서 LIKE는 SQL에서 패턴 매칭을 수행할 때 사용되는 연산자이며, 물음표(?)는 매개변수화된 쿼리에서 값이 위치할 자리를 나타내는  플레이스홀더입니다.
# 조건은 아래 코드에서 추가됩니다.

cursor.execute(query, ('%' + search_term + '%',))
# Cursor 객체의 execute 메소드를 사용하여 지정된 쿼리를 데이터베이스 엔진에 전달합니다.
# 여기에선 특정 패턴을 포함하는 레코드를 검색하기 위한 SQL 쿼리를 실행합니다.
#
# ('%' + search_term + '%',)
# 앞에서 쿼리문에 추가한  플레이스홀더(?)에 바인딩될 값을 튜플 형태로 제공합니다.
# %는 SQL의 와일드카드 문자로, 어떤 문자열의 앞이나 뒤에 위치할 수 있는 임의의 문자열을 나타냅니다.
# 즉, 레코드의 값에 search_term 변수의 값이 부분적으로 포함되어 있으면 해당 레코드가 결과에 포함됩니다.
# 예를 들어 변수 search_term이 apple이라면, %apple% 패턴은 'apple', 'green apple', 'apple pie' 등 'apple'을 포함하는 문자열과 일치합니다.


results = cursor.fetchall()
# cursor에 의해 실행된 마지막 `SELECT` 쿼리의 결과로 반환된 모든 행(row)을 가져와 변수 results에 저장합니다.
# 각 행은 튜플 형식으로 저장되며, 이 튜플들의 리스트가 변수 results에 저장됩니다.



conn.close()
# close() 메소드를 사용하여 데이터베이스 연결을 안전하게 종료합니다.


for row in results:
    print(row)
# 결과 데이터를 출력합니다.





실행결과입니다. animal 컬럼의 값이 토끼인 레코드(행)을 보여줍니다.

 

Database connection successful!
(2011, '토끼')
(2023, '토끼')




sqlite3 테이블에 데이터 삽입하는 Python 예제코드

https://webnautes.tistory.com/2225



sqlite3 테이블 출력하는 Python 예제

https://webnautes.tistory.com/2372



sqlite3 테이블에 있는 레코드 개수 세는 Python 예제코드

https://webnautes.tistory.com/2223 

 

sqlite3 테이블에 있는 레코드 하나를 랜덤으로 보여주는 Python 예제

https://webnautes.tistory.com/2224

 

sqlite3 테이블에서 데이터를 검색하는 Python 예제코드

https://webnautes.tistory.com/2226

 

sqlite3 테이블에서 중복값을 찾는 Python 예제코드

https://webnautes.tistory.com/2233

 

sqlite3 테이블의 스키마(schema)를 출력하는 Python 예제코드

https://webnautes.tistory.com/2227




반응형