본문 바로가기
파이썬/Tortoise-ORM

[Python] Tortoise ORM 시작하기

by 책 읽는 개발자_테드 2022. 4. 23.
반응형

Tortoise ORM이란? https://scshim.tistory.com/576

1. 설치

$ pip install tortoise-orm

db 드라이버도 함께 설치하려면 다음과 같이 명령어를 작성한다.

pip install tortoise-orm[asyncpg]

ex) pip install tortoise-orm[aiomysql]

 

2. models 정의하기

models.py

from tortoise.models import Model
from tortoise import fields


class Tournament(Model):
    id = fields.IntField(pk=True)
    name = fields.TextField()

 

3. 데이터베이스 초기화하기

from tortoise import Tortoise, run_async


async def init():
	# SQLite을 사용하여 DB db.sqlite3 파일을 생성한다.
    await Tortoise.init(
        db_url='sqlite://db.sqlite3',
        modules={'models': ['app.models']}
    )

    # 스키마를 생성한다.
    await Tortoise.generate_schemas()


# run_async는 async Tortoise scripts를 실행하기 위한 helper function이다.
run_async(init())

- generate_schema는 빈 데이터베이스에 스키마를 생성한다. 따라서 모든 앱 초기화에서 실행해서는 안되고 처음 한 번만 실행하면 된다.

- 스키마를 생성할 때 테이블이 아직 존재하지 않는 경우에만 테이블을 삽입하는 안전 매개변수를 True로 설정하는 옵션도 있다.

예) Tortoise.generate_schemas(safe=True)

 

4. Tortoise orm 사용하기

async def run():
   # Create instance by save
   tournament = Tournament(name='New Tournament')
   await tournament.save()

   # Or by .create()
   await Tournament.create(name='Another Tournament')

   # Now search for a record
   tour = await Tournament.filter(name__contains='Another').first()
   print(tour.name)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()

 

출처: https://github.com/tortoise/tortoise-orm

 

반응형

댓글