문서의 이전 판입니다!
기존 DB TOOL을 이용해도 되지만 가벼운 DB TOOL 첨부할테니 필요하신 분은 사용 하시면 됩니다.
예제 코드 중database.db
파일을 생성하는데 DB TOOL로 해당 파일을 열면 안에 데이터를 확인할 수 있습니다.
# 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)