Python

Python 문법 기초 32 - 개인용 DB : sqlite3

코딩탕탕 2022. 10. 22. 17:31

 

# 개인용 DB : sqlite3 : 파이썬 기본 개인용 데이터베이스

import sqlite3
print(sqlite3.sqlite_version)

print()
conn = sqlite3.connect('exem.db')

try:
    cursor = conn.cursor() # SQL문 처리
    
    # table 생성 SQL문은 ""를 사용하는 것이 좋다.
    cursor.execute("create table if not exists fritab(name text, phone text)")
    
    # 자료 추가
    cursor.execute("insert into fritab(name,phone) values('한국인','111-1111')")
    cursor.execute("insert into fritab values('우주인','222-1111')")
    cursor.execute("insert into fritab values(?,?)", ('신기해','333-1111'))
    inputdata = ('신기루','444-1111')
    cursor.execute("insert into fritab values(?,?)", inputdata)
    conn.commit() # java는 오토 commit 이지만 파이썬은 수동이다.

    # select
    cursor.execute("select * from fritab")
    print(cursor.fetchone()) # 한개만 읽는다.
    print(cursor.fetchall()) # 모두 읽는다.

    

except Exception as e:
    print('err : ', e)
    conn.rollback()
finally:
    conn.close()


<console>
3.38.2

('한국인', '111-1111')
[('우주인', '222-1111'), ('신기해', '333-1111'), ('신기루', '444-1111'), ('한국인', '111-1111'), ('우주인', '222-1111'), ('신기해', '333-1111'), ('신기루', '444-1111'), ('한국인', '111-1111'), ('우주인', '222-1111'), ('신기해', '333-1111'), ('신기루', '444-1111'), ('한국인', '111-1111'), ('우주인', '222-1111'), ('신기해', '333-1111'), ('신기루', '444-1111'), ('한국인', '111-1111'), ('우주인', '222-1111'), ('신기해', '333-1111'), ('신기루', '444-1111')]

table 생성 SQL문은 ""를 사용하는 것이 좋다.

SQL문은 ;을 사용하지 않는다.(오라클 제외)

파일이 있으면 안 만들어진다. SQL 테이블도 테이블 명이 존재하면 만들어지지 않는다.

fetchone() 함수는 데이터를 한개만 읽는다.

fetchall() 함수는 데이터를 모두 읽는다.

java는 오토 commit 이지만 파이썬은 수동이다.