사용자 도구

사이트 도구


wiki:ai:python:데이터베이스_연동_sqlite_-_테이블_생성_및_삽입

문서의 이전 판입니다!


테이블 생성 및 삽입

  • description : 테이블 생성 및 삽입
  • author : 도봉산핵주먹
  • email : hylee@repia.com
  • lastupdate : 2020-06-25

테이블 생성 및 삽입

준비사항

기존 DB TOOL을 이용해도 되지만 가벼운 DB TOOL 첨부할테니 필요하신 분은 사용 하시면 됩니다.

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()

실행 콘솔

<_csv.reader object at 0x000001787F76FA60>
<class '_csv.reader'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num']
 
['번호', '이름', '가입일시', '나이']
['1', '김정수', '2017-01-19 11:30:00', '25']
['2', '박민구', '2017-02-07 10:22:00', '35']
['3', '정순미', '2017-01-22 09:10:00', '33']
['4', '김정현', '2017-02-22 14:09:00', '45']
['5', '홍미진', '2017-04-01 18:00:00', '17']
['6', '김순철', '2017-05-14 22:33:07', '22']
['7', '이동철', '2017-03-01 23:44:45', '27']
['8', '박지숙', '2017-01-11 06:04:18', '30']
['9', '김은미', '2017-02-08 07:44:33', '51']
['10', '장혁철', '2017-12-01 13:01:11', '16']
 
<_csv.reader object at 0x000001787F7967C0>
<class '_csv.reader'>
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line_num']
 
['번호', '이름', '가입일시', '나이']
['1', '김정수', '2017-01-19 11:30:00', '25']
['2', '박민구', '2017-02-07 10:22:00', '35']
['3', '정순미', '2017-01-22 09:10:00', '33']
['4', '김정현', '2017-02-22 14:09:00', '45']
['5', '홍미진', '2017-04-01 18:00:00', '17']
['6', '김순철', '2017-05-14 22:33:07', '22']
['7', '이동철', '2017-03-01 23:44:45', '27']
['8', '박지숙', '2017-01-11 06:04:18', '30']
['9', '김은미', '2017-02-08 07:44:33', '51']
['10', '장혁철', '2017-12-01 13:01:11', '16']
 
<csv.DictReader object at 0x000001787EE68550>
<class 'csv.DictReader'>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_fieldnames', 'dialect', 'fieldnames', 'line_num', 'reader', 'restkey', 'restval']
 
번호 1
이름 김정수
가입일시 2017-01-19 11:30:00
나이 25
-----
번호 2
이름 박민구
가입일시 2017-02-07 10:22:00
나이 35
-----
번호 3
이름 정순미
가입일시 2017-01-22 09:10:00
나이 33
-----
번호 4
이름 김정현
가입일시 2017-02-22 14:09:00
나이 45
-----
번호 5
이름 홍미진
가입일시 2017-04-01 18:00:00
나이 17
-----
번호 6
이름 김순철
가입일시 2017-05-14 22:33:07
나이 22
-----
번호 7
이름 이동철
가입일시 2017-03-01 23:44:45
나이 27
-----
번호 8
이름 박지숙
가입일시 2017-01-11 06:04:18
나이 30
-----
번호 9
이름 김은미
가입일시 2017-02-08 07:44:33
나이 51
-----
번호 10
이름 장혁철
가입일시 2017-12-01 13:01:11
나이 16
-----
 
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'writerow', 'writerows']
<class '_csv.writer'>
 
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'writerow', 'writerows']
<class '_csv.writer'>
 
  Sap Co.      대리점 영업사원       전월       금월  TEAM  총 판매수량
0  KI1316  경기수원대리점  이기정  1720000  2952000     1     123
1  KI1451  충청홍성대리점  정미진  4080000  2706000     2     220
2  KI1534  경기화성대리점  경인선   600000  2214000     1     320
3  KI1636  강원속초대리점  이동권  3720000  2870000     3     110
4  KI1735  경기안양대리점  강준석  4800000  2296000     1     134
 
   Sap Co.       대리점 영업사원       전월       금월  TEAM  총 판매수량
15  KI2870  경기구리시대리점  박진형  6000000  3400000     2     143
16  KI2910   강원춘천대리점  김은향  4800000  4896000     1     176
17  KI3030   강원영동대리점  전수창  4560000  3128000     2      98
18  KI3131   경기하남대리점  김민정  2750000  7268000     3     293
19  KI3252   강원포천대리점  서가은  2420000  4740000     4     240
 
(20, 7)

Tip

/volume1/web/dokuwiki/data/attic/wiki/ai/python/데이터베이스_연동_sqlite_-_테이블_생성_및_삽입.1593176663.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)