SQL - SQL with Python

2026. 4. 13. 10:19ยท๐Ÿงฉ SQL

SQLite

 

 

โœ… Python ํ™˜๊ฒฝ์—์„œ SQLite ์‚ฌ์šฉํ•˜๊ธฐ


Placeholder

import sqlite3

connection = sqlite3.connect("users.db")

cursor = connection.cursor()


def init_table():
    cursor.execute(
        """
    CREATE TABLE users (
        user_id integer primary key autoincrement,
        username text not null,
        password text not null
    );
    """
    )
    cursor.execute(
        """
        insert into users (username, password) 
        values ('nico', 123), ('lynn', 321);
    """
    )


def print_all_users():
    result = cursor.execute("select * from users;")
    data = result.fetchall()
    print(data)


def i_change_password(username, new_password):
    cursor.execute(
        f"UPDATE users SET password = '{new_password}' WHERE username = '{username}'"
    )


def s_change_password(username, new_password):
    cursor.execute(
        "UPDATE users SET password = ? WHERE username = ?", (new_password, username)
    )


s_change_password("nico", "hached again' --")
print_all_users()
connection.commit()
connection.close()

i_change_password() ๋ฐฉ์‹์€ SQL Injection ์œ„ํ—˜์— ๋…ธ์ถœ๋˜์–ด ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.
s_change_password() ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ?๋ฅผ placeholder๋กœ ์‚ฌ์šฉํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.

 

executemany

import sqlite3

connection = sqlite3.connect("users.db")

cursor = connection.cursor()


def init_table():
    cursor.execute(
        """
    CREATE TABLE users (
        user_id integer primary key autoincrement,
        username text not null,
        password text not null
    );
    """
    )
    cursor.execute(
        """
        insert into users (username, password) 
        values ('nico', 123), ('lynn', 321);
    """
    )


def print_all_users():
    result = cursor.execute("select * from users;")
    data = result.fetchall()
    print(data)


def i_change_password(username, new_password):
    cursor.execute(
        f"UPDATE users SET password = '{new_password}' WHERE username = '{username}'"
    )


def s_change_password(username, new_password):
    cursor.execute(
        "UPDATE users SET password = ? WHERE username = ?", (new_password, username)
    )


data = [
    ("lannna", 567),
    ("bora", 123),
    ("max", 123),
    ("jja", 898),
]

# cursor.executemany("INSERT INTO users (username, password) VALUES (?, ?)", data)


data = [
    {"name": "lannna", "password": 567},
    {"name": "bora", "password": 123},
    {"name": "max", "password": 123},
    {"name": "jja", "password": 898},
]

cursor.executemany(
    "INSERT INTO users (username, password) VALUES (:name, :password)", data
)
print_all_users()

connection.commit()
connection.close()

placeholder๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฐ’์ด key์™€ value๋ฅผ ๊ฐ€์งˆ ๋•Œ, :์™€ key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ value๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

Cursor, fetchmany, fetchone, etc

import sqlite3

conn = sqlite3.connect("movies_download.db")

cur = conn.cursor()

res = cur.execute(
    "SELECT movie_id, title FROM movies ORDER BY movie_id"
)  # ์—ฌ๊ธฐ์„œ ์„ ํƒ๋œ ๋ฐ์ดํ„ฐ๋“ค์€ ์•„์ง ๋‚ด ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์—(๋ฉ”๋ชจ๋ฆฌ์—) ๋กœ๋“œ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

# all_movies = res.fetchall()  # ์—ฌ๊ธฐ์„œ fetchall์„ ํ•ด์•ผ ์‹ค์ œ๋กœ ๋กœ๋“œ๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

print(res.fetchmany(20))

print(res.fetchone(), res.fetchone(), res.fetchone())

for movie in res:
    print(
        movie
    )  # ์ˆœํ™˜ํ•˜๋ฉด์„œ ๋ชจ๋“  ์˜ํ™”๋“ค์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ, fetchall์ฒ˜๋Ÿผ ํ•œ ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์ง€๋Š” ์•Š์•„์„œ, ๋ถ€๋‹ด์ด ์ ๋‹ค.

conn.commit()
conn.close()

fetchmany(20)์„ ํ–ˆ์„ ๋•Œ cursor๋Š” 20๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๋’ค ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ์œ„์น˜์— cursor๋ฅผ ๋‘๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹ค์Œ์— fetchmany(20)์„ ๋˜ ํ•˜๊ฒŒ ๋์„ ๋•Œ, ๊ธฐ์กด ๊ฐ’๋“ค์„ skipํ•˜๊ณ  20๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.
(์ด๋Ÿฌํ•œ ์ด์œ ๋กœ fetchmany(20)๊ฐ™์€ ๋™์ž‘์„ ํ•˜๊ณ  ๋‚œ ํ›„, fetchall์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ž์˜ 20๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋Š” ํฌํ•จ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.)

 

 

โœ… Python์—์„œ SQLite, PostgreSQL, MySQL๊ณผ ์†Œํ†ตํ•˜๋Š” ๋ฐฉ์‹์€ ๊ฐ™๋‹ค.


๋ชจ๋“  driver๊ฐ€ Python Database API Specification์„ ๋งŒ์กฑํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ

 

PostgreSQL driver document

https://www.psycopg.org/psycopg3/docs/basic/usage.html

 

Basic module usage - psycopg 3.3.4.dev1 documentation

Previous Installation

www.psycopg.org

 

MySQL driver document

https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html

 

MySQL :: MySQL Connector/Python Developer Guide :: 5.1 Connecting to MySQL Using Connector/Python

5.1 Connecting to MySQL Using Connector/Python The connect() constructor creates a connection to the MySQL server and returns a MySQLConnection object. The following example shows how to connect to the MySQL server: import mysql.connector cnx = mysql.conn

dev.mysql.com

 

'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL - Supabase & Drizzle  (0) 2026.05.22
SQL - Drizzle(ORM)  (0) 2026.04.13
SQL - SQL Injection  (0) 2026.04.09
SQL - PostgreSQL, Extensions  (0) 2026.04.06
SQL - PostgreSQL, JSON Column  (0) 2026.04.06
'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL - Supabase & Drizzle
  • SQL - Drizzle(ORM)
  • SQL - SQL Injection
  • SQL - PostgreSQL, Extensions
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    0๋ ˆ๋ฒจ
    Python
    API
    next.js 12
    dev setup
    React Native
    Prisma
    mongoDB
    MySQL
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    PostgreSQL
    Firebase
    ๋ชจ๋”ฅ๋‹ค
    Next.js
    tailwindcss
    next.js 14
    react router
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    SQL
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
SQL - SQL with Python
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”