[Project] Streamlit๊ณผ SQLite

Yumya's recordยท2025๋…„ 3์›” 26์ผ

SKALA

๋ชฉ๋ก ๋ณด๊ธฐ
13/25
post-thumbnail

๐Ÿฆ– Streamlit๊ณผ SQLite ์—ฐ๋™ ์ •๋ฆฌ ๐Ÿฆ–

SQLite

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์„ ๊ตฌํ˜„ํ•˜๋Š” C ์–ธ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์ž‘๊ณ  ๋น ๋ฅด๋ฉฐ, ์ž์ฒด ํฌํ•จ๋œ ๊ณ ์‹ ๋ขฐ์„ฑ์˜ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถค
ํ”Œ๋žซํผ ๊ฐ„ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€

Install

SQLite๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

pip install sqlite3

Connect

conn = sqlite3.connect(<db>) 

splite3์„ ํ†ตํ•ด DB์— ์—ฐ๊ฒฐํ•œ๋‹ค.
์ด๋•Œ DB๋Š” ์›ํ•˜๋Š” ๋Œ€๋กœ ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ ์‹œ ์ƒ์„ฑ๋œ๋‹ค.

cursor = conn.cursor()

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋Š” Cursor๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„๋Š” ๋๋‚ฌ๋‹ค.

Run

Query ์‹คํ–‰

cursor.execute(<query>)

์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

conn.commit()

SQLite์—์„œ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ผญ ์ปค๋ฐ‹์„ ํ•ด์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค..
์ปค๋ฐ‹์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ํŠธ๋žœ์žญ์…˜์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์œผ๋‹ˆ ์žŠ์ง€ ์•Š๊ธธ ๋ฐ”๋ž€๋‹ค.

Table

DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

cursor.execute('''
    CREATE TABLE IF NOT EXISTS boards (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name VARCHAR(255) NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
''')

๋‹ค๋ฅธ DB๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๊ฐ™์ด ๋™์ผํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

Bring data

DB์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๋ฐฐ์—ด ํ˜•ํƒœ์ด๋ฉฐ, ๊ฐ ์ปฌ๋Ÿผ์— ๊ฒฐ๊ณผ ๊ฐ’์ด ๋‹ด๊ฒจ์žˆ์–ด ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.

cursor.fetchone()
cursor.fetchall()
cursor.fetchmany(n)

ํ•„์š”์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€ ์ค‘์— ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

all_datas = cursor.fetchall()

name = all_datas[1]

๋ชจ๋“  ํ–‰์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด fetchall์„ ์‚ฌ์šฉํ•˜๊ณ , all_datas ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์ธ name๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.


DB์˜ ๊ฒฝ์šฐ ์ƒ์„ฑ๋œ ํ›„ DB๋‚˜ DB ์•ˆ์˜ ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋˜์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ, ์ด์ „์— streamlit ์ž์ฒด ๋ฐฐํฌ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๊นƒํ—ˆ๋ธŒ์™€ ์—ฐ๋™ํ•ด ๋ฐฐํฌํ–ˆ์—ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, streamlit ๋ฐฐํฌ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์—์„œ ๋ฐฐํฌ๋œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ž ๋“ค์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

์ž ๋“ค์–ด๋ฒ„๋ฆฐ๋‹ค = ์žฌ๋ฐฐํฌ => DB ๋‚ ์•„๊ฐ

์ฆ‰, DB๊ฐ€ ์žฌ๋ฐฐํฌ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ์‹œ์ผœ๋ฒ„๋ ธ๋‹ค.

๊ทธ๋ž˜์„œ ์Šค์นผ๋ผ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์„ฑํ•ด์ค€ ์†Œ์ค‘ํ•œ ๋ฐฉ๋ช…๋ก์ด ์‚ฌ๋ผ์ ธ๋ฒ„๋ ธ๋‹ค...๐Ÿ˜ญ๐Ÿ˜ฑ
(์ž‘์„ฑํ•ด์ฃผ์‹  ๋ถ„๋“ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค... ๐Ÿ™‡)

์ƒ๊ฐ์น˜๋„ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„์ง€๋งŒ, ์‚ฌ์šฉํ•ด๋ณด์ง€ ๋ชปํ•œ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹จ๊ธฐ๊ฐ„์— ๊ฐœ๋ฐœ์„ ํ•ด๋ƒˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹ค์Œ์—๋Š” DB ๋ฐฑ์—…์ด๋‚˜ ๋‹ค๋ฅธ RDBMS๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ‘Š


์ถœ์ฒ˜-Install SQLite
์ถœ์ฒ˜-SQLite

profile
๐Ÿ€ ูฉ(หŠแ—œห‹*)ูˆ ๐Ÿ€

0๊ฐœ์˜ ๋Œ“๊ธ€