728x90
[01] Sqlite3 + Python 연동 실습
1. database 생성 방법
1) sqlite3.exe test.db를 통한 생성
2) Python 소스를 통한 생성
2. Python 소스를 이용한 데이터베이스 파일과 테이블 자동 생성
- Python 소스가 있는 폴더에 생성됩니다.
▷ /sqlite3/create_table.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
# python.db 파일이 존재하지 않아도 정상 실행됨.
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE phonebook(
name CHAR(32),
phone CHAR(32),
email CHAR(64) PRIMARY KEY
)
''')
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
3. Insert
- conn.commit(): DBMS에 저장을 적용 시키는 트랜잭션 명령어
- cursor.lastrowid: 데이터베이스 테이블에 기본적으로 등록되는 레코드의 번호이며
개발자가 SELECT는 할 수 없음.
레코드를 모두 지우고 다시 insert하면 1부터 시작함.
▷ /sqlite3/insert_record.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute("""
INSERT INTO phonebook (name, phone, email)
VALUES(?, ?, ?)
""",
('가길동', '021-322-1542', 'mail1@mail.com')
)
id = cursor.lastrowid
print(id)
cursor.execute("""
INSERT INTO PHONEBOOK (NAME, PHONE, EMAIL)
VALUES(?, ?, ?)
""", ('나길동', '021-445-2424', 'mail2@mail.com'))
id = cursor.lastrowid
print(id)
conn.commit()
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
4. Select list
- cursor.fetchall(): 모든 레코드의 산출
- cursor.fetchone(): 하나의 레코드 산출
[실행 화면]
- cursor.fetchone(): 하나의 레코드 산출
[실행 화면]
NAME: 가길동, PHONE: 021-322-1542, EMAIL: mail1@mail.com
NAME: 나길동, PHONE: 021-445-2424, EMAIL: mail2@mail.com
▷ /sqlite3/select_record.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute("""
SELECT name, phone, email
FROM phonebook
ORDER BY email ASC
""")
rows = cursor.fetchall() # 모든 레코드의 산출
for row in rows:
print ("NAME: {0}, PHONE: {1}, EMAIL: {2} ". format(row[0], row[1], row[2]))
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
4. Select read
- cursor.fetchall(): 모든 레코드의 산출
- cursor.fetchone(): 하나의 레코드 산출
[실행 화면]
NAME: 가길동, PHONE: 021-322-1542, EMAIL: mail1@mail.com
▷ /sqlite3/select_read.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute("""
SELECT name, phone, email
FROM phonebook
WHERE name=?
ORDER BY email ASC
""", ('가길동',)
)
row = cursor.fetchone() # 하나의 레코드 산출
print ("NAME: {0}, PHONE: {1}, EMAIL: {2} ". format(row[0], row[1], row[2]))
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
5. Update
[실행 화면]
NAME: 아로미, PHONE: 000-1111-2222, EMAIL: mail1@mail.com
[실행 화면]
NAME: 아로미, PHONE: 000-1111-2222, EMAIL: mail1@mail.com
▷ /sqlite3/update_record.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute("""
UPDATE phonebook
SET phone=?, name=?
WHERE email=?
""", ('000-1111-2222', '아로미', 'mail1@mail.com'))
conn.commit()
cursor.execute("""
SELECT name, phone, email
FROM phonebook
WHERE email=?
""", ('mail1@mail.com',))
row = cursor.fetchone()
print ("NAME: {0}, PHONE: {1}, EMAIL: {2} ". format(row[0], row[1], row[2]))
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
6. 삭제
- ('mail1@mail.com',): 하나의 값 전달시 ',' 생략하지 말것.
- ('mail1@mail.com',): 하나의 값 전달시 ',' 생략하지 말것.
▷ /sqlite3/delete_record.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import sqlite3
conn = sqlite3.connect('python.db')
cursor = conn.cursor()
cursor.execute("""
DELETE FROM phonebook
WHERE email=?
""", ('mail1@mail.com',))
conn.commit()
cursor.execute("""
SELECT name, phone, email
FROM phonebook
ORDER BY email ASC
""")
rows = cursor.fetchall()
for row in rows:
print ("NAME: {0}, PHONE: {1}, EMAIL: {2} ". format(row[0], row[1], row[2]))
cursor.close()
conn.close()
-------------------------------------------------------------------------------------
728x90
'빅데이터 프로그래밍 > Python' 카테고리의 다른 글
[Python] 23. Regular Expression(정규 표현식) 기본 문법 실습 1 (0) | 2017.08.05 |
---|---|
[Python] 22. [DBMS] Sqlite3 + Python 연동 실습, 140자 일기장 만들기 (0) | 2017.08.05 |
[Python] 20. [DBMS] 데이터베이스 개론, SQLite3 사용 (0) | 2017.08.02 |
[Python] 19. [GUI] wxPython 그래픽 사용자 인터페이스, 다양한 Widget, Menu (0) | 2017.08.02 |
[Python] 18. [GUI] wxPython 그래픽 사용자 인터페이스, 기본 Widget, Sizer (0) | 2017.08.02 |
댓글