在大型的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)
我們去啟動下看看,是否可以建立
我們執行後,可以看到我們的資料庫建立完畢了。
表結構和我們設計的是一樣的,這樣我們就完成了建立資料庫的操作,我們接下來就是看,如何去運算元據庫。
文章首發在公眾號,歡迎關注。