티스토리 뷰
[SQLite3]
SQLite는 별도의 DB 서버가 필요없이 DB 파일에 기초하여 데이타베이스 처리를 구현한 Embedded SQL DB 엔진이다.
SQLite는 별도의 복잡한 서버 설치가 필요 없고, 쉽고 편리하게 사용할 수 있다는 점에서 널리 사용되고 있다.
오늘날 대부분의 Mac OS X 나 리눅스에서는 SQLite을 기본적으로 내장하고 있지만,
만약 시스템에 내장되어 있지 않는 경우는 http://www.sqlite.org 에서 다운받아 설치할 수 있다.
SQLite는 기본적으로 SQLite DB 엔진과 "sqlite3" 라는 Command line tool 을 갖고 있다.
[초기화 및 테이블/필드 추가]
import sqlite3
con = sqlite3.connect(':memory:') # ./test.db
cur = con.cursor()
cur.execute("create table phonebook(name text, phone text)")
cur.execute("insert into phonebook values('kim', '111')")
cur.execute("insert into phonebook values('lee', '222')")
cur.execute("insert into phonebook values('park', '010-1234-5678')")
cur.execute("update phonebook set name='choi', phone='333' where name='kim' or name='lee'")
cur.execute("delete from phonebook where name='park'")
cur.execute("select * from phonebook")
con.commit()
for row in cur:
print(row)
우선 sqlite3 모듈을 임포트 해야 한다.
파이썬 2.5 이상 부터는 내장되어 있다.
connect 할 경로를 지정한다. memory 에 저장할 수 있고, 파일 경로를 지정해 주면 파일에 저장된다.
excute 함수를 통해 명령어를 입력한다.
추가/삭제 후에는 commit() 를 호출해야 db 에 적용이 된다.
[모든 테이블 가저오기]
cur.execute("select name from sqlite_master where type='table'")
print([table[0] for table in cur])
[테이블 찾기]
cur.execute("select name from sqlite_master where type='table' and name='phonebook'")
table = [tb[0] for tb in cur]
print(table)
[테이블 삭제]
cur.execute("drop table phonebook")
[필드 단일 삽입]
cur.execute("insert into phonebook values('kim', '010-1234-5678')")
[필드 다중 삽입]
cur.executemany("insert into phonebook1 values(?,?)", [("kim", "010-2222-3333"), ("lee", "010-3333-4444")])
[필드 가저오기]
cur.execute("select * from phonebook")
print("keys=", [fd[0] for fd in cur.description])
print("values=", [row for row in cur])
functional
import sqlite3
def handler(func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except sqlite3.OperationalError as e:
print(e)
except Exception as e:
print(e)
return wrapper
@handler
def create_table(con, table, *args):
cur = con.cursor()
fields = ("{} text," * len(args)).format(*args)[:-1]
cur.execute("create table {}({})".format(table, fields))
@handler
def insert_fields(con, table, field_list):
cur = con.cursor()
cur.executemany("insert into {} values({})".format(table, ",".join(['?']*len(field_list[0]))), field_list)
@handler
def find_table(con, table):
cur = con.cursor()
cur.execute("select name from sqlite_master where type='table' and name='{}'".format(table))
table = [tb[0] for tb in cur]
return table[0] if table else []
@handler
def delete_tables(con, tables):
cur = con.cursor()
for table in tables:
cur.execute("drop table {}".format(table))
@handler
def select_table(con, table, key=False):
cur = con.cursor()
cur.execute("select * from {}".format(table))
values = [row for row in cur]
return [tuple([fd[0] for fd in cur.description])] + values if key else values
@handler
def get_tables(con):
cur = con.cursor()
cur.execute("select name from sqlite_master where type='table'")
return tuple([table[0] for table in cur])
# if __name__ == "__main__":
# with sqlite3.connect(':memory:') as con:
# create_table(con, 'phonebook1', 'name', 'phone', 'address', 'email')
# insert_fields(con, 'phonebook1', [('lee', '011', '서울', 'gmail'), ('kim', '010', '서울', 'naver')])
# con.commit()
# print([table for table in get_tables(con)])
# print(select_table(con, 'phonebook1', key=True))
# print(select_table(con, 'phonebook1'))
'python lecture > basic' 카테고리의 다른 글
[edu] __name__ == "__main__" (0) | 2019.01.29 |
---|---|
[edu] 정규표현식 (regex) (0) | 2019.01.29 |
[edu] map 함수 (builtins, lambda, list) (0) | 2019.01.28 |
[edu] while 예제 모음 (스택, 문자열) (0) | 2019.01.28 |
[edu] 벤치마크 (benchmark, time, timeit, decorator, context manager, 시간, 성능) (0) | 2019.01.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이미지 비교
- gitlab
- chatbot
- Python
- 면접답변
- 파이썬 독학
- 파이썬 프로그래밍
- 문서 비교
- 플러스친구 자동응답
- gitignore
- 장고 플러스친구 자동응답
- django
- django chatbot
- virtualenv
- 문과 코딩
- GIT
- pycrypto
- 모바일 스킨 적용
- 파이썬
- 면접정답
- 장고 카톡 자동응답
- 파이썬 입문
- admin.py
- 파이썬 강좌
- 엑셀 비교
- PuTTYGen
- Tistory
- 장고
- wsgi
- 모바일 테마 적용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함