메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Python sqlite memory 사용법

데브카페
  • SQLite 데이터베이스를 메모리에서 사용하는 방법은 파이썬에서 매우 간단
  • 데이터베이스를 파일로 저장하는 대신, 연결 문자열로 `:memory:`를 지정
  • 데이터는 프로그램이 실행되는 동안 RAM에만 존재하며, 프로그램이 종료되면 자동으로 사라짐.

기본적인 사용법


import sqlite3

# 1. 메모리 데이터베이스 연결
# ':memory:'는 데이터베이스가 메모리에 생성되도록 지시합니다.
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()

# 2. 테이블 생성 (예시)
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    )
''')
print("테이블 'users'가 성공적으로 생성되었습니다.")

# 3. 데이터 삽입 (예시)
users_data = [
    ('Alice', 'alice@example.com'),
    ('Bob', 'bob@example.com'),
    ('Charlie', 'charlie@example.com')
]
cursor.executemany("INSERT INTO users (name, email) VALUES (?, ?)", users_data)
conn.commit() # 변경사항을 커밋합니다. 메모리 DB라도 커밋해야 데이터가 반영됩니다.
print("데이터가 성공적으로 삽입되었습니다.")

# 4. 데이터 조회 (예시)
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print("\n테이블 'users'의 모든 데이터:")
for row in rows:
    print(row)

# 5. 데이터 업데이트 (예시)
cursor.execute("UPDATE users SET email = ? WHERE name = ?", ('alice.new@example.com', 'Alice'))
conn.commit()
print("\n'Alice'의 이메일이 업데이트되었습니다.")

# 6. 업데이트된 데이터 조회
cursor.execute("SELECT * FROM users WHERE name = 'Alice'")
print(f"업데이트된 Alice 정보: {cursor.fetchone()}")

# 7. 데이터 삭제 (예시)
cursor.execute("DELETE FROM users WHERE name = ?", ('Bob',))
conn.commit()
print("\n'Bob'의 데이터가 삭제되었습니다.")

# 8. 최종 데이터 조회
cursor.execute("SELECT * FROM users")
print("\n데이터 삭제 후 테이블 'users'의 모든 데이터:")
for row in cursor.fetchall():
    print(row)

# 9. 연결 닫기
# 메모리 DB는 프로그램 종료 시 자동으로 사라지지만, 명시적으로 닫아주는 것이 좋습니다.
conn.close()
print("\n데이터베이스 연결이 닫혔습니다.")
```

메모리 SQLite 사용의 장점

  • **속도:** 디스크 I/O가 없기 때문에 파일 기반 데이터베이스보다 훨씬 빠릅니다.
  • **간편성:** 파일 관리나 경로 지정이 필요 없습니다.
  • **임시 데이터 처리:** 프로그램 실행 중에만 필요한 데이터를 저장하고 처리하는 데 이상적입니다.
  • **테스트:** 단위 테스트나 통합 테스트에서 실제 데이터베이스에 영향을 주지 않고 격리된 환경을 제공하는 데 유용합니다.
  • **보안:** 데이터가 디스크에 남지 않아 민감한 임시 데이터 처리에 유리합니다.

메모리 SQLite 사용의 단점

  • **휘발성:** 프로그램이 종료되거나 연결이 닫히면 모든 데이터가 사라집니다. 데이터를 영구적으로 저장해야 한다면 파일 기반 데이터베이스를 사용해야 합니다.
  • **메모리 사용:** 대량의 데이터를 저장하면 시스템 메모리를 많이 차지할 수 있습니다.

언제 메모리 SQLite를 사용해야 하나요

  • 복잡한 인메모리 데이터 구조가 필요하지만, 파이썬의 기본 자료구조(리스트, 딕셔너리 등)로는 충분하지 않을 때 (예: SQL 쿼리의 이점 활용).
  • 데이터베이스 스키마와 SQL 쿼리를 테스트할 때.
  • 임시로 데이터를 저장하고 처리해야 할 때.
  • 성능이 중요한 배치 작업에서 중간 데이터를 저장할 때.

Comments