Python/SQLite

[Python] API SQLite

Pydole 2018. 4. 23. 02:39





디스크 기반의 가벼운 데이터 베이스이고, 속도도 빠르다. 자세한 특징은 홈페이지에 요약

sqlite3 모듈은 'Gerhard Häring'에 작성되었고, DB-API 2.0 스펙을 따르는 인터페이스를 제공하는 모듈



- 소개 홈페이지 : http://www.sqlite.org/about.html

- 파이썬 SQLite : https://docs.python.org/3/library/sqlite3.html?highlight=pysqlite


 


SQLite API 사용


순서 

작업 

 1

 Connection Open

 2

 Curosr Open

 3

 Select / insert / update / delete 

 4

 Curosr Close

 5

 Connection Close  





example.db 생성

import sqlite3

conn = sqlite3.connect('example.db')





stocks 테이블 생성과 값 입력 (데이터 타입 : text)

c = conn.cursor()

c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')

c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

conn.commit() # 저장(commit)


conn.close() # DB연결 종료. 자동으로 commit 하지않기 때문에, 호출이전에 commit() / rollback() 호출해야함.



stocks 테이블 생성과 값 입력 (데이터 타입 : CHAR, 기본키 지정)

conn = sqlite3.connect('example.db')
c = conn.cursor()

c.execute('''CREATE TABLE stocks2
(date CHAR(32), trans CHAR(32), symbol CHAR(32), qty CHAR(32), price CHAR(32) PRIMARY KEY)''')

c.execute("INSERT INTO stocks VALUES ('2007-01-05','BUY2','RHAT2',200,30.14)")

conn.commit()

conn.close()



stocks 테이블 스키마 보기

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

cursor = conn.cursor()
cursor.execute("select sql from sqlite_master where type = 'table' and name = 'stocks2'")
print(cursor.fetchall())
[('CREATE TABLE stocks2\n             (date CHAR(32), trans CHAR(32), symbol CHAR(32), qty CHAR(32), price CHAR(32) PRIMARY KEY)',)]




입력된 값 검색. (fetchone() : 검색된 결과로부터 1개의 데이터를 반환, 데이터가 없는 경우 None 반환)

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

c.execute('SELECT * FROM stocks')

print(c.fetchone())

('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)





입력된 값 검색 (fetchall() : 조회된 결과를 모두 리스트형태로 반환, 데이터가 없는 경우 빈 리스트 반환)

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

c.execute('SELECT * FROM stocks')

print(c.fetchall())




for문을 이용해 모든 입력된 값 검색. 

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

for row in c.execute('SELECT * FROM stocks'):
print(row)
('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)