====== 테이블 생성 및 삽입 ======
* description : 테이블 생성 및 삽입
* author : 도봉산핵주먹
* email : hylee@repia.com
* lastupdate : 2020-06-26
===== 테이블 생성 및 삽입 =====
==== 준비사항 ====
> 기존 DB TOOL을 이용해도 되지만 가벼운 DB TOOL 첨부할테니 필요하신 분은 사용 하시면 됩니다.
> 예제 코드 중 ''database.db'' 파일을 생성하는데 DB TOOL로 해당 파일을 열면 안에 데이터를 확인할 수 있습니다.
{{ :wiki:ai:python:sqlitedatabasebrowserportable_3.10.1_english.paf.zip |SQLiteDatabase}}
==== 예제 코드 ====
# Section12-1
# 파이썬 데이터베이스 연동(SQLite)
# 테이블 생성 및 삽입
import datetime
import sqlite3
# 삽입 날짜 생성
now = datetime.datetime.now()
print('now', now)
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print('nowDatetime', nowDatetime)
# sqlite3 버전
print('sqlite3.version : ', sqlite3.version)
print('sqlite3.sqlite_version', sqlite3.sqlite_version)
# DB생성 & Autocommit
# 본인 DB 파일 생성할 경로
# conn = sqlite3.connect('본인이 원하는 경로/database.db/database.db')
conn = sqlite3.connect('D:/python_bnasic/resource/database.db', isolation_level=None)
# DB생성(메모리)
# conn = sqlite3.connect(":memory:")
# Cursor연결
c = conn.cursor()
print('Cursor Type : ', type(c))
# 테이블 생성(Datatype : TEXT NUMERIC INTEGER REAL BLOB)
c.execute(
"CREATE TABLE IF NOT EXISTS users( \
id INTEGER PRIMARY KEY, username text, email text, phone text, website text, regdate text \
)") # AUTOINCREMENT
# \ --> 다음 줄 연결
# IF NOT EXISTS --> 없으면 만든다
# 데이터 삽입
c.execute("INSERT INTO users VALUES (1 ,'Kim','Kim@naver.com', '010-0000-0000', 'Kim.com', ?)", (nowDatetime,))
c.execute("INSERT INTO users(id, username, email, phone, website, regdate) VALUES (?, ?, ?, ?, ?, ?)",
(2, 'Park', 'Park@naver.com', '010-1111-1111', 'Park.com', nowDatetime))
# Many 삽입(튜플, 리스트)
userList = (
(3, 'Lee', 'Lee@naver.com', '010-2222-2222', 'Lee.com', nowDatetime),
(4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', nowDatetime),
(5, 'Yoo', 'Yoo@naver.com', '010-4444-4444', 'Yoo.com', nowDatetime)
)
c.executemany("INSERT INTO users(id, username, email, phone, website, regdate) VALUES (?, ?, ?, ?, ?, ?)", userList)
# 테이블 데이터 삭제
# print("users db deleted : ", conn.execute("delete from users").rowcount, "rows")
# .rowcount --> 몇개 지웠는지 확인
# 커밋 : isolation_level=None 일 경우 자동 반영(Auto Commit)
conn.commit()
# 롤백
# conn.rollback()
# 접속 해제
conn.close()
===== Tip =====
> 실행 결과는 다음 조회예제에서 select로 확인 가능합니다.
* [[wiki:ai:python:데이터베이스 연동(SQLite) - 테이블 조회|데이터베이스 연동(SQLite) - 테이블 조회]]
{{tag>도봉산핵주먹 python }}