中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

nat123做網(wǎng)站廈門百度快速優(yōu)化排名

nat123做網(wǎng)站,廈門百度快速優(yōu)化排名,廈門建設(shè)網(wǎng)站,監(jiān)利網(wǎng)站建設(shè)之前我們創(chuàng)建的文件都是在一個(gè)目錄中,但是在我們的實(shí)際開(kāi)發(fā)中,肯定不能這樣設(shè)計(jì),那么我們?nèi)?chuàng)建一個(gè)目錄,叫models,大致如下。 主要目錄是: __init__.py 是一個(gè)空文件,說(shuō)明models是一個(gè)package…

之前我們創(chuàng)建的文件都是在一個(gè)目錄中,但是在我們的實(shí)際開(kāi)發(fā)中,肯定不能這樣設(shè)計(jì),那么我們?nèi)?chuàng)建一個(gè)目錄,叫models,大致如下。

主要目錄是:


· __init__.py 是一個(gè)空文件,說(shuō)明models是一個(gè)package

· crud.py 數(shù)據(jù)庫(kù)操作相關(guān)

· database.py 數(shù)據(jù)庫(kù)配置相關(guān)

· models.py 數(shù)據(jù)庫(kù)模型表

· schemas.py 模型驗(yàn)證

· main.py 主文件

database.py代碼如下:

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmakerconn = "mysql+pymysql://{username}:{password}@{host}:{port}/{database}?charset=utf8".format(username="root", password="123456", host="10.30.10.36", port=3306, database="fastapi_learn_road")
engine = create_engine(conn)# 該類的每個(gè)實(shí)例都是一個(gè)數(shù)據(jù)庫(kù)會(huì)話,該類本身還不是數(shù)據(jù)庫(kù)會(huì)話,但是一旦我們創(chuàng)建了SessionLocal的實(shí)例,這個(gè)實(shí)例將是實(shí)際的數(shù)據(jù)庫(kù)會(huì)話
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)# 創(chuàng)建數(shù)據(jù)庫(kù)基類
Base = declarative_base()

models.py代碼如下:

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from .database import Baseclass User(Base):__tablename__ = "users"id = Column(Integer, primary_key=True, index=True)email = Column(String(10), unique=True, index=True)hashed_password = Column(String(100))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(10), index=True)description = Column(String(10), index=True)owner_id = Column(Integer, ForeignKey("users.id"))owner = relationship("User", back_populates="items")

schemas.py代碼如下:定義請(qǐng)求參數(shù)模型驗(yàn)證與響應(yīng)模型驗(yàn)證的Pydantic模型。

from pydantic import BaseModel
from typing import List, Optionalclass BaseItem(BaseModel):title: strdescription: Optional[str] = Noneclass ItemModel(BaseItem):passclass ItemOut(BaseItem):id: intowner_id: intclass Config:orm_mode = Trueclass BaseUser(BaseModel):email: strclass UserModel(BaseUser):"""請(qǐng)求參數(shù)模型"""password: strclass UserOut(BaseUser):"""響應(yīng)模型"""id: intis_active: boolitems: List[ItemOut]class Comfig:orm_mode = True

crud.py代碼如下:

# 之前都是把所有邏輯寫(xiě)到了接口函數(shù)里,其實(shí)我們應(yīng)該抽出來(lái),一起管理
from fastapi import HTTPException
from sqlalchemy.orm import Session
from .models import *
from .schemas import *def get_user_method(db: Session, uid: int):user = db.query(User).filter(User.id == uid).first()if not user:raise HTTPException(status_code=404, detail="user not exists")return userdef create_user_method(db: Session, user: UserModel):db_user = db.query(User).filter(User.email == user.email).first()if db_user:raise HTTPException(status_code=200, detail="this user already exists")fake_hashed_password = user.password + "_hashed"init_user = User(email=user.email, hashed_password=fake_hashed_password)db.add(init_user)db.commit()db.refresh(init_user)return init_userdef get_items_method(db: Session, skip: int = 0, limit: int = 10):return db.query(Item).offset(skip).limit(limit).all()def get_items_by_uid_method(db: Session, uid: int):user = db.query(User).filter(User.id == uid).first()if not user:raise HTTPException(status_code=200, detail="this user is not valid")return db.query(Item).filter(Item.owner == user).offset(0).limit(2).all()def create_item_by_user_method(db: Session, uid: int, item: ItemModel):init_item = Item(**item.dict(), owner_id=uid)db.add(init_item)db.commit()db.refresh(init_item)return init_item

main.py代碼如下:

from fastapi import FastAPI, Depends, HTTPException
from models.crud import *
from models.database import *app = FastAPI()def create_db():"""每個(gè)請(qǐng)求處理完畢后關(guān)閉當(dāng)前連接,不同的請(qǐng)求使用不同的鏈接"""db = SessionLocal()try:yield dbfinally:db.close()@app.post("/user", response_model=UserOut)
def create_user(user: UserModel, db: Session = Depends(create_db)):return create_user_method(db, user)@app.get("/user", response_model=UserOut)
def get_user(uid: int, db: Session = Depends(create_db)):return get_user_method(db, uid)@app.post("/items/{uid}", response_model=ItemOut)
def create_item_by_user(uid: int, item: ItemModel, db: Session = Depends(create_db)):return create_item_by_user_method(db, uid, item)@app.get("/items", response_model=List[ItemOut])
def get_items(skip: int = 0, limit: int = 10, db: Session = Depends(create_db)):return get_items_method(db, skip, limit)@app.get("/items/{uid}", response_model=List[ItemOut])
def get_items_by_uid(uid: int, db: Session = Depends(create_db)):return get_items_by_uid_method(db, uid)if __name__ == '__main__':import uvicornuvicorn.run("main:app", reload=True)

我們目前是這么改造的。后續(xù)還會(huì)持續(xù)改造的。目前我們沒(méi)有對(duì)API接口main文件進(jìn)行改造,下面的分享我們會(huì)對(duì)api接口做改造。

http://www.risenshineclean.com/news/56618.html

相關(guān)文章:

  • 做的網(wǎng)站手機(jī)打不開(kāi)怎么回事啊徐州網(wǎng)站建設(shè)
  • 貿(mào)易公司如何做英文網(wǎng)站保定seo網(wǎng)絡(luò)推廣
  • 網(wǎng)站文字超鏈接怎么做seo 360
  • 網(wǎng)站建設(shè)設(shè)計(jì)設(shè)計(jì)公司哪家好軟文推廣是什么意思?
  • 百度seo培訓(xùn)課程廈門seo服務(wù)
  • 做網(wǎng)站要買數(shù)據(jù)庫(kù)安卓?jī)?yōu)化大師hd
  • 個(gè)人博客系統(tǒng)wordpress電腦優(yōu)化軟件推薦
  • 做網(wǎng)站的技術(shù)關(guān)鍵網(wǎng)站如何注冊(cè)
  • wordpress多站點(diǎn)子網(wǎng)站css錯(cuò)誤手機(jī)百度賬號(hào)登錄入口
  • 好點(diǎn)得手機(jī)網(wǎng)站托管一套完整的運(yùn)營(yíng)方案
  • 南陽(yáng)網(wǎng)站建設(shè)seo品牌網(wǎng)站建設(shè)方案
  • wordpress調(diào)用當(dāng)前頁(yè)面鏈接鄭州seo優(yōu)化外包熱狗網(wǎng)
  • 電子商務(wù)網(wǎng)站建設(shè)項(xiàng)目規(guī)劃書(shū)排名點(diǎn)擊工具
  • 馬鞍山網(wǎng)站建設(shè)seo網(wǎng)站推廣可以自己搞嗎
  • 工作室網(wǎng)站建設(shè)方案模板seo國(guó)外英文論壇
  • 免費(fèi)做問(wèn)卷的網(wǎng)站好精準(zhǔn)營(yíng)銷理論
  • c 新手一個(gè)人做網(wǎng)站最有效的15個(gè)營(yíng)銷方法
  • 簡(jiǎn)潔的企業(yè)網(wǎng)站無(wú)錫seo關(guān)鍵詞排名
  • 如何快速找到做網(wǎng)站的客戶seo關(guān)鍵詞排名優(yōu)化哪好
  • 人事處網(wǎng)站開(kāi)發(fā)文獻(xiàn)綜述有廣告位怎么找廣告商
  • 做淘客網(wǎng)站怎么深圳廣告公司
  • 網(wǎng)站建設(shè)好怎么優(yōu)化上海搜索排名優(yōu)化
  • 靜海做網(wǎng)站公司網(wǎng)絡(luò)推廣圖片大全
  • 深圳航空公司seo外鏈優(yōu)化
  • 創(chuàng)造與魔法官方網(wǎng)站一起做喜歡的事瀏覽器里面信息是真是假
  • 免費(fèi)的域名解析楓樹(shù)seo網(wǎng)
  • 河北滄州泊頭做網(wǎng)站的電話aso優(yōu)化平臺(tái)有哪些
  • 網(wǎng)站設(shè)計(jì)培訓(xùn)seo信息優(yōu)化
  • dw做網(wǎng)站怎么發(fā)布全網(wǎng)營(yíng)銷的公司
  • 網(wǎng)站升級(jí)維護(hù)汕頭seo網(wǎng)站推廣