sqlite3 테이블에 데이터 삽입하는 Python 예제코드Python/sqlite32024. 3. 7. 20:48
Table of Contents
반응형
sqlite3 테이블에 데이터를 삽입하는 Python 예제코드입니다.
2023. 11. 23 최초작성
2024. 3. 7 에러처리 코드 추가
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 명령을 데이터베이스에 보내고, 결과를 받을 수 있습니다. query = f'DROP TABLE {table_name}' try: cursor.execute(query) print("Table delection successful!") except sqlite3.Error as e: print(f"Table delection failed: {e}") # 테이블에 데이터 삽입하는 테스트 목적 코드이기 때문에 실행할때마다 기존 테이블을 삭제합니다. # 테이블을 생성합니다. query = f''' CREATE TABLE IF NOT EXISTS {table_name} ( year INTEGER PRIMARY KEY, animal TEXT ) ''' # CREATE TABLE IF NOT EXISTS {table_name} # 변수 table_name로 지정한 테이블이 존재하는지 확인하고 없으면 새로 생성합니다. # # 테이블에 두 개의 열을 정의하고 있습니다. # 1. year INTEGER PRIMARY KEY # year 컬럼은 INTEGER 타입으로 연도를 저장하기 위해 사용됩니다. # 각 행의 고유한 식별자로 작동하는 기본 키(primary key)로 설정됩니다 # # 2. animal TEXT # animal 컬럼은 TEXT 타입으로, 연도에 해당하는 동물의 이름을 저장합니다. try: cursor.execute(query) print("Table creation successful!") except sqlite3.Error as e: print(f"Table creation failed: {e}") conn.close() exit() # Cursor 객체의 execute 메소드를 사용하여 지정된 쿼리를 데이터베이스 엔진에 전달합니다. # 여기에선 테이블 생성 퀴리를 전달합니다. animals = [ '쥐', '소', '호랑이', '토끼', '용', '뱀', '말', '양', '원숭이', '닭', '개', '돼지' ] # 12지신의 동물 순서대로 정의합니다. year = 2000 # 시작 연도입니다. # 2000년부터 2023년까지의 12지신 동물 이름을 테이블에 삽입합니다. for _ in range(24): # 2000~ 2023의 해를 반복합니다. animal = animals[(year - 2000 + 4) % 12] # 동물 이름을 결정합니다. 2000년은 용의 해이기 때문에 4을 더해주고 열두번마다 동물 순서가 반복되도록 합니다. try: cursor.execute(f'INSERT INTO {table_name} (year, animal) VALUES (?, ?)', (year, animal)) except sqlite3.Error as e: print(f"Data insertion failed: {e}") # Cursor 객체의 execute 메소드를 사용하여 지정된 쿼리를 데이터베이스 엔진에 전달합니다. # 여기에선 연도 year와 동믈 이름 animal을 변수 table_name으로 지정한 테이블에 삽입합니다. # {table_name} 다음에 오는 (year, animal)는 데이터를 삽입할 컬럼의 이름입니다. # VALUES 다음에 오는 (?, ?)에는 execute의 두번째 아규먼트로 주어진 (year, animal) 튜플이 차례대로 값을 제공합니다. # 첫번째 ?에는 year의 값이, 두번째 ?에는 animal의 값이 제공됩니다. year += 1 # 다음 해로 넘어갑니다. conn.commit() # 변경사항을 커밋합니다. # conn 객체를 사용하여 실행된 모든 SQL 문의 결과를 데이터베이스에 저장합니다. cursor.execute(f'SELECT * FROM {table_name}') # Cursor 객체의 execute 메소드를 사용하여 지정된 쿼리를 데이터베이스 엔진에 전달합니다. # 여기에선 table_name 변수에 저장된 이름의 테이블로부터 모든 컬럼(*)에 대한 모든 데이터를 선택하여 반환하라고 요청합니다. results = cursor.fetchall() # cursor에 의해 실행된 마지막 `SELECT` 쿼리의 결과로 반환된 모든 행(row)을 가져와 변수 results에 저장합니다. # 각 행은 튜플 형식으로 저장되며, 이 튜플들의 리스트가 변수 results에 저장됩니다. cursor.close() # 커서와 데이터베이스 연결을 종료합니다. conn.close() # close() 메소드를 사용하여 데이터베이스 연결을 안전하게 종료합니다. for result in results: print(result) # 결과 데이터를 출력합니다. |
실행결과입니다. 테이블에 삽입되어있던 연도와 동물 이름을 출력해줍니다.
Database connection successful! Table delection successful! Table creation successful! (2000, '용') (2001, '뱀') (2002, '말') (2003, '양') (2004, '원숭이') (2005, '닭') (2006, '개') (2007, '돼지') (2008, '쥐') (2009, '소') (2010, '호랑이') (2011, '토끼') (2012, '용') (2013, '뱀') (2014, '말') (2015, '양') (2016, '원숭이') (2017, '닭') (2018, '개') (2019, '돼지') (2020, '쥐') (2021, '소') (2022, '호랑이') (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
반응형
'Python > sqlite3' 카테고리의 다른 글
sqlite3 테이블에서 중복값을 찾는 Python 예제코드 (0) | 2024.03.07 |
---|---|
sqlite3 테이블에서 데이터를 검색하는 Python 예제코드 (0) | 2024.03.07 |
sqlite3 테이블에 있는 레코드 하나를 랜덤으로 보여주는 Python 예제 (0) | 2024.03.07 |
sqlite3 테이블에 있는 레코드 개수 세는 Python 예제코드 (0) | 2024.03.07 |
sqlite3 테이블의 스키마(schema)를 출력하는 Python 예제코드 (0) | 2024.03.07 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!