반응형

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, '토끼')




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts