Python/sqlite3

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

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

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

 

2023. 11. 25  최초작성

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 명령을 데이터베이스에 보내고, 결과를 받을 수 있습니다.


query = f"PRAGMA table_info({table_name})"
# PRAGMA 문은 SQLite에서 제공하는 특수 명령으로, 데이터베이스의 설정을 변경하거나, 데이터베이스 내부의 정보를 검색하는 데 사용됩니다.
#  table_info({table_name}) PRAGMA 함수는 괄호 안에 주어진 table_name 변수의 값에 해당하는 테이블의 스키마 정보를 반환합니다.

try:
    cursor.execute(query)
   
except sqlite3.Error as e:
    print(f"pragma failed : {e}")
# Cursor 객체의 execute 메소드를 사용하여 지정된 쿼리를 데이터베이스 엔진에 전달합니다.
# 여기에선 테이블의 스키마를 가져옵니다.


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


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


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





실행결과  테이블 구조를 정의한 스키마(schema)를 출력해줍니다.

 

Database connection successful!
(0, 'year', 'INTEGER', 0, None, 1)
(1, 'animal', 'TEXT', 0, None, 0)



출력된 각 튜플은 데이터베이스 테이블의 컬럼을 기술하는 정보를 담고 있습니다.

 

(0, 'year', 'INTEGER', 0, None, 1)

 

year 라는 이름의 컬럼은 INTEGER 타입이며, 튜플의 마지막 값이 1이라서 이 컬럼이 테이블의 기본 키(primary key)로 사용된다는 것을 나타냅니다.

  

(1, 'animal', 'TEXT', 0, None, 0)

animal 이라는 이름의 컬럼은 TEXT 타입이며,  튜플의 마지막 값이 0이라서 이 컬럼이 테이블의 기본 키가 아니라는 것을 나타냅니다







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



반응형