์ฝ”๋“œ - ํŒจ์บ  ์ˆ˜์—… ์ฝ”๋“œ ์ฐธ๊ณ  (ํŒจ์บ  ์ˆ˜์—… ์ •๋ฆฌ)

 

 

<์ด์ „ ๊ธ€>

https://silvercoding.tistory.com/44

 

[python ๊ธฐ์ดˆ] 12. ์™ธ๋ถ€ ํŒŒ์ผ ์ฒ˜๋ฆฌ (Excel, CSV ํŒŒ์ผ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ)

์ฝ”๋“œ - ํŒจ์บ  ์ˆ˜์—… ์ฝ”๋“œ ์ฐธ๊ณ  (ํŒจ์บ  ์ˆ˜์—… ์ •๋ฆฌ) <์ด์ „ ๊ธ€> https://silvercoding.tistory.com/43 https://silvercoding.tistory.com/42 https://silvercoding.tistory.com/41 https://silvercoding.tistory.com/40..

silvercoding.tistory.com

 

import sqlite3
import datetime

์šฐ์„  ์‚ฌ์šฉํ•  ๊ฒƒ import ํ•ด์ฃผ๊ธฐ 

 

 

- SQliteDatabaseBrowserPortable.exe ๋ฅผ ์„ค์น˜ํ•ด ์ค€๋‹ค. 

์ด๊ณณ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ์‚ฝ์ž… ๋‚ ์งœ ์ƒ์„ฑ 

now = datetime.datetime.now()
print('now: ', now)

nowDateTime = now.strftime('%Y-%m-%d %H:%M:%S')
print('nowDateTime: ', nowDateTime)

 now:  2021-08-03 11:43:31.850770 
 nowDateTime:  2021-08-03 11:43:31 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ฃ์–ด์ค„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์ „ ์ƒ์„ฑํ•œ๋‹ค.  

 

 

 

- sqlite3 ์‚ดํŽด๋ณด๊ธฐ 

print('sqlite3.version: ', sqlite3.version)
print('sqlite3.sqlite_version: ', sqlite3.sqlite_version)

 sqlite3.version:  2.6.0 
 sqlite3.sqlite_version:  3.33.0 

 

 

 

 

 

 

* sqlite ์‚ฌ์šฉ 

(1) DB ์ƒ์„ฑ & Auto Commit (Rollback) 

conn = sqlite3.connect('./resource/database.db', isolation_level=None)

DB๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•ด ์ค€๋‹ค. DB์— ๋ช…๋ นํ•  ๋•Œ ์ปค๋ฐ‹(commit)์„ ๊ผญ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ , isolation_level=None์œผ๋กœ ์„ค์ •ํ•˜๋ฉด AutoCommit์ด ๋œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ์•„๊นŒ ๋‹ค์šด๋ฐ›์•˜๋˜ SQliteDatabaseBrowserPortable.exe ์—์„œ [ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ด๊ธฐ - database.db ] ๋ฅผ ์‹คํ–‰ ํ•ด ์ค€๋‹ค. 

 

 

(2) Cursor 

# Cursor 
c = conn.cursor()
print('Cursor Type: ', type(c))

 Cursor Type:  <class 'sqlite3.Cursor'> 

cursor ์—ฐ๊ฒฐ์„ ํ•ด์ค€๋‹ค. ์ด ์ปค์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ช…๋ น์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

(3) ํ…Œ์ด๋ธ” ์ƒ์„ฑ CREATE TABLE 

( Data type : 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)')

 

ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ CREATE TABLE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋‹ค์Œ ํ…Œ์ด๋ธ”์ด๋ฆ„(์†์„ฑ ํƒ€์ž…) ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์ค€๋‹ค. id ์†์„ฑ์„ PRIMARY KEY๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ user ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค! 

 

 

(4) ๋ฐ์ดํ„ฐ ์‚ฝ์ž… INSERT INTO

# ๋ฐฉ๋ฒ• 1 
c.execute("INSERT INTO users VALUES(1, 'Kim', 'silver@naver.com', '010-0000-0000', 'kim.com', ?)", (nowDateTime,))
# ๋ฐฉ๋ฒ• 2 
c.execute('INSERT INTO users(id, username, email, phone, website, regdate) VALUES (?, ?, ?, ?, ?, ?)', (2, 'Park', 'Park@daum.net', '010-1111-1111', 'Park.com', nowDateTime))

- INSERT INTO ํ…Œ์ด๋ธ”์ด๋ฆ„ VALUES() 

- INSERT INTO ํ…Œ์ด๋ธ”์ด๋ฆ„() VALUES() 

๋ฐฉ๋ฒ• 1์€ ๋ฐ”๋กœ VALUES์•ˆ์— ๊ฐ’์„ ๋„ฃ๊ณ , ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์„ ๊ฒฝ์šฐ ?๋กœ ์ž‘์„ฑํ•œ ํ›„ execute์˜ ์ธ์ž์—์„œ ํŠœํ”Œ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.  ๋ฐฉ๋ฒ• 2๋Š” ํ…Œ์ด๋ธ”์ด๋ฆ„() ์•ˆ์— ์†์„ฑ ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜์—ดํ•˜๊ณ  , VALUES() ์•ˆ์— ๋ชจ๋‘ ? ๋กœ ์ž‘์„ฑํ•ด ์ฃผ๊ณ , execute์˜ ์ธ์ž์—์„œ ํŠœํ”Œ ์•ˆ์— ๊ฐ’ ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. 

์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด์ฃผ๋ฉด ์œ„์™€ ๊ฐ™์ด ๊ฐ’์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค! 

 

 

(5) Many ์‚ฝ์ž… ( ํŠœํ”Œ, ๋ฆฌ์ŠคํŠธ ) 

userList = (
    (3, 'Lee', 'Lee@naver.com', '010-2222-2222', 'Lee.com', nowDateTime),
    (4, 'Cho', 'Cho@daum.net', '010-3333-3333', 'Cho.com', nowDateTime),
    (5, 'Yoo', 'Yoo@google.com', '010-4444-4444', 'Yoo.net', nowDateTime)
)

c.executemany('INSERT INTO users(id, username, email, phone, website, regdate) VALUES(?, ?, ?, ?, ?, ?)', userList)

excutemany์˜ ๋‘๋ฒˆ์งธ ์ธ์ž์— ํŠœํ”Œ์ด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ํ•œ๊บผ๋ฒˆ์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

(6) ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์‚ญ์ œ 

conn.execute('DELETE FROM users')

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด ์ฃผ๋ฉด users ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค. 

 

 

- ์ง€์›Œ์ง„ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‚ญ์ œํ•˜๊ธฐ 

print('users db delete : ', conn.execute('DELETE FROM users').rowcount)

 users db delete :  5 

rowcount๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

(7) ์ปค๋ฐ‹ & ๋กค๋ฐฑ 

: isolation_level="None" ์ผ ๊ฒฝ์šฐ ์ž๋™ ๋ฐ˜์˜ 

# ์ปค๋ฐ‹
# conn.commit()

# ๋กค๋ฐฑ
# conn.rollback()

๋ณธ ํฌ์ŠคํŒ…์—์„  ์˜คํ† ์ปค๋ฐ‹ ์„ค์ •์„ ํ•ด๋†จ์œผ๋ฏ€๋กœ ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ํ•ด ๋†“๋Š”๋‹ค. 

 

 

(8) ์ ‘์† ํ•ด์ œ 

conn.close()

๋งˆ๋ฌด๋ฆฌ ํ•  ๋•Œ๋Š” ์ ‘์†ํ•ด์ œ๋ฅผ ๊ผญ ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค! 

 

 

 

+ Recent posts