이 문서에서는 다음을 다룹니다.
Python은 다양한 유형의 데이터베이스와 상호작용하기 위한 여러 라이브러리를 제공한다. 예를 들어:
sqlite3, SQLAlchemy, psycopg2, mysql-connector-python.pymongo.
SQLAlchemy는 파이썬용 강력한 객체-관계 매핑(ORM) 라이브러리이다. 이를 사용하면 SQL 쿼리를 직접 작성하지 않고 파이썬 객체를 사용하여 SQL 데이터베이스와 상호작용할 수 있다.
설치:
pip install sqlalchemy
코드:
from sqlalchemy import create_engine, Column, Integer, String, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 데이터베이스 정의
engine = create_engine('sqlite:///sqlalchemy_example.db')
Base = declarative_base()
# 모델 정의
class Student(Base):
__tablename__ = 'students'
id = Column(Integer, Sequence('student_id_seq'), primary_key=True)
name = Column(String(50))
age = Column(Integer)
grade = Column(String(10))
# 테이블 생성
Base.metadata.create_all(engine)
print("Database and table created successfully!")
session 명령어를 사용하여 데이터베이스에 데이터를 삽입하고 조회할 수 있다. SQLAlchemy에서 session은 데이터베이스와 상호작용을 관리하는 객체이다.
# session 생성
Session = sessionmaker(bind=engine)
session = Session()
# 데이터 삽입
session.add_all([
Student(name="Alice", age=20, grade="A"),
Student(name="Bob", age=22, grade="B"),
Student(name="Charlie", age=21, grade="C")
])
session.commit()
print("Data inserted successfully!")
# 데이터 조회
students = session.query(Student).all()
print("Student Records:")
for student in students:
print(f"ID: {student.id}, Name: {student.name}, Age: {student.age}, Grade: {student.grade}")
# record 수정
student_to_update = session.query(Student).filter_by(name="Bob").first()
student_to_update.grade = "A+"
session.commit()
print("Record updated successfully!")
# record 삭제
student_to_delete = session.query(Student).filter_by(name="Charlie").first()
session.delete(student_to_delete)
session.commit()
print("Record deleted successfully!")
MongoDB는 JSON과 유사한 문서 형식으로 데이터를 저장하는 NoSQL 데이터베이스이다. pymongo 라이브러리는 Python에서 MongoDB와 상호작용할 수 있는 도구를 제공한다.
설치:
pip install pymongo
코드
from pymongo import MongoClient
# MongoDB에 연결
client = MongoClient("mongodb://localhost:27017/")
# database와 collection 생성
db = client["example_db"]
students_collection = db["students"]
print("MongoDB connected successfully!")
# 데이터 삽입
students = [
{"name": "Alice", "age": 20, "grade": "A"},
{"name": "Bob", "age": 22, "grade": "B"},
{"name": "Charlie", "age": 21, "grade": "C"}
]
students_collection.insert_many(students)
print("Data inserted successfully!")
# 데이터 조회
for student in students_collection.find():
print(student)
# record 수정
students_collection.update_one({"name": "Bob"}, {"$set": {"grade": "A+"}})
print("Record updated successfully!")
# record 삭제
students_collection.delete_one({"name": "Charlie"})
print("Record deleted successfully!")