[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바