FastAPI 學習之路(六十一)使用mysql資料庫替換sqlite資料庫
阿新 • • 發佈:2021-11-21
我們首先需要安裝對應的連線的依賴
pip install pymysql
然後在配置testDatabase.py
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:@127.0.0.1:3306/test" engine = create_engine( SQLALCHEMY_DATABASE_URL, encoding='utf8', echo=True ) TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base()
修改成本地的連線mysql,連線的test的資料庫,我們需要在本地去建立test的資料庫,那麼我們建立完畢後,去啟動,發現報錯
在自動建立資料庫的時候,使用mysql資料庫,String型別對應的是VARCHAR型別,需要指定長度,否則會報下面錯誤,而在sqlite不會出現。
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from config import EVENT
if EVENT == "test":
from models.testDatabase import Base, engine
else:
from models.database import Base, engine
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String(length=252), unique=True, index=True)
hashed_password = Column(String(length=252))
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(length=252), index=True)
description = Column(String(length=252), index=True)
owner_id = Column(Integer, ForeignKey("users.id"))
owner = relationship("User", back_populates="items")
然後我們在啟動,
日誌裡面正常去建立了對應的資料庫。
在資料庫的對應的資料表也同步建立成功,這樣我們就完成了,測試服的替換,我們可以用介面工具postman去除錯下。
可以看到建立成功,
資料庫中,也正常了建立了對應的資料,我們在測試服的更改資料庫完成,同比,我們的其他環境也可以這麼修改即可。
程式碼儲存https://gitee.com/liwanlei/fastapistuday
文章首發在公眾號,歡迎關注。
