SQLite3

yoon__0_0·2024년 8월 14일
0

프로젝트

목록 보기
1/7

SQLite 설치 - Download 링크

  • 자신에게 알맞는 zip 파일 다운로드
  • 다운로드 후 zip 파일 열어주기

SQLite 실행

  • 자신이 DB를 만들고자 하는 폴더로 감.

  • 터미널 창에서 명령어 실행

  • db 파일로 생성하기 위해서 .db로 database를 생성함 : CLI 환경

sqlite3 {원하는 DB명}.db

sqlalchemy 사용

  • 백엔드에서 많이 사용
  • 따로 복잡한 쿼리문을 작성하지 않아도 객체 형식으로 연결된 것까지 모두 가져올 수 있음
  • ORM(object relational mapping)을 이용하면 파이썬 문법만으로도 데이터베이스를 다룰 수 있음 .
  • 파이썬에서 가장 많이 사용하는 ORM 도구
  • ORM을 이용하면 데이터베이스 종류에 상관 없이 일관된 코드를 유지할 수 있어서 프로그램을 유지·보수하기가 편리
  • 또한 내부에서 안전한 SQL 쿼리를 자동으로 생성해 주므로 개발자가 달라도 통일된 쿼리를 작성할 수 있고 오류 발생률도 줄일 수 있음.

SQLalchemy 코드


기본적인 코드

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///app/models/dsdb.db"

engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
  • project 기본 폴더의 app/models 폴더 안에 dsdb.db의 데이터베이스를 만들겠다. (sqlite)
  • 그 아래는 모두 기본적인 코드

DB Table 연결 코드

from sqlalchemy import Column, Integer, ForeignKey, BLOB, Text, String
from sqlalchemy.orm import relationship
from app.models.database import Base


class PersonalProfile(Base):
    __tablename__ = 'personal_profile'

    profile_id = Column(Integer, primary_key=True, unique=True, nullable=False)
    name = Column(String, nullable=False)
    email = Column(String, nullable=False)
    password = Column(String, nullable=False)
    phone_number = Column(String, nullable=False)
    profile_image = Column(BLOB)

    teams_managed = relationship('TeamProfile', back_populates='manager')
    issues_published = relationship('Issue', back_populates='publisher')
    comments_published = relationship(
        'IssueComment', back_populates='publisher')
    memberships = relationship('TeamMembership', back_populates='member')

class TeamProfile(Base):
    __tablename__ = 'team_profile'

    profile_id = Column(Integer, primary_key=True, unique=True, nullable=False)
    team_name = Column(String, nullable=False)
    team_introduction = Column(Text, nullable=False)
    team_manager = Column(Integer, ForeignKey(
        'personal_profile.profile_id', onupdate="CASCADE", ondelete="RESTRICT"), nullable=False)
    profile_image = Column(BLOB)

    manager = relationship('PersonalProfile', back_populates='teams_managed')
    memberships = relationship('TeamMembership', back_populates='team')
  • ForeginKey 설정과 relationship 설정은 다른 설정
  • ForeginKey : 참조하는 외래 키 ( 기본적으로 사용하는 그 외부키 )
  • relationship : relationship('{다른 테이블 객체명}', back_populates = '{다른 코드에서 사용할 이름}')
  • back_populates, backref 가 존재하는데 이는 각 관계가 몇대몇 관계인지에 대해 달라질 수 있음. - 참조
profile
신윤재입니다

0개의 댓글