FastAPI 學習之路(三十二)建立資料庫

北漂的雷子發表於2021-10-20

在大型的web開發中,我們肯定會用到資料庫操作,那麼FastAPI也支援資料庫的開發,你可以用 PostgreSQL MySQL SQLite Oracle 等

 

本文用SQLite為例。我們看下在fastapi是如何操作設計資料庫的

#這個安裝依賴也可以
pip install sqlalchemy
#我在看到有支援非同步的,我用的這個,但是這個沒有上面的成熟
pip install fastapi-async-sqlalchemy

我們看下如何在專案中使用

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" #固定格式
engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
#connect_args 這個只有sqlite才用
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
#SessionLocal 類的每個例項都是一個資料庫會話。 該類本身還不是資料庫會話。
# 但是一旦我們建立了 SessionLocal 類的例項,這個例項將是實際的資料庫會話。
Base = declarative_base()

我們用Base作為基礎的,通過繼承來建立每個資料庫模型或類。我們看下

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, index=True)
    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)
    items = relationship("Item", back_populates="owner")

class Item(Base):
    __tablename__ = "items"
    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    description = Column(String, index=True)
    owner_id = Column(Integer, ForeignKey("users.id"))
    owner = relationship("User", back_populates="items")

   我們去建立了兩個類,一個人,一個每一項,然後有對應的關聯關係,這個表格怎麼同步到資料庫呢,其實很簡單。

        

Base.metadata.create_all(bind=engine)

 我們去啟動下看看,是否可以建立

 

 我們執行後,可以看到我們的資料庫建立完畢了。

 

 

 表結構和我們設計的是一樣的,這樣我們就完成了建立資料庫的操作,我們接下來就是看,如何去運算元據庫。

文章首發在公眾號,歡迎關注。

相關文章