[Python] 21. [DBMS] Sqlite3 + Python 연동 실습

2017. 8. 5. 00:01·빅데이터 프로그래밍/Python
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(): 하나의 레코드 산출 
 
[실행 화면]

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 

▷ /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',): 하나의 값 전달시 ',' 생략하지 말것.

▷ /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
'빅데이터 프로그래밍/Python' 카테고리의 다른 글
  • [Python] 23. Regular Expression(정규 표현식) 기본 문법 실습 1
  • [Python] 22. [DBMS] Sqlite3 + Python 연동 실습, 140자 일기장 만들기
  • [Python] 20. [DBMS] 데이터베이스 개론, SQLite3 사용
  • [Python] 19. [GUI] wxPython 그래픽 사용자 인터페이스, 다양한 Widget, Menu
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    servlet class
    jsp parameter
    css block
    클론코딩
    proxy pass
    에디터 팁
    VS Code 팁
    ssl 인증서 발급
    css list
    AI 코딩 에이전트
    브라우저 자동화
    lang rust
    Extension Bisect
    자바 객체 지향
    자바 생성자
    css tb
    자바 배열
    자바 for문
    Rust lang
    jsp include
    자바 exception
    vue 설치
    nginx
    docker
    자바 클래스
    nginx ssl 적용
    css float
    React Compiler
    API 설계
    java casting
    리눅스 설치
    css transition
    vscode
    vue cli
    Node
    gitlab 설치
    rust linux
    spring java
    mysql db
    Java Array
    프런트엔드
    티스토리 자동화
    css table
    nginx ssl 설정
    css perspective
    svelte
    오류
    러스트
    ubuntu
    SSL 인증서
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Python] 21. [DBMS] Sqlite3 + Python 연동 실습
상단으로

티스토리툴바