從0開始改寫一個pip庫(spider-admin-pro)

【公開倉庫】基于Flask的后端項目spider-admin-pro: https://github.com/mouday/spider-admin-pro
【私有倉庫】基于Vue的前端項目spider-admin-pro-web: https://github.com/mouday/spider-admin-pro-web

一笨篷、[二次開發(fā)] :Vue前端項目spider-admin-pro-web

1瓣履、安裝項目

# 克隆項目
git clone git@github.com:mouday/spider-admin-pro-web.git

# 進入項目目錄
cd spider-admin-pro-web

# 安裝依賴
npm install

# 建議不要直接使用 cnpm 安裝以來袖迎,會有各種詭異的 bug⊙嘧叮可以通過如下操作解決 npm 下載速度慢的問題
npm install --registry=https://registry.npm.taobao.org

# 啟動服務(wù)
npm run dev
  1. NVM管理node(一定要以管理員身份運行終端归形,報錯:exit status 5: ????????)
    由于作者使用的node 10版本,我這里是node16厚棵,于是需要使用nvm管理多個node版本
    教程【NVM管理node版本
    nvm ls available 查看可用版本
    nvm install 10.24.1 安裝指定版本
nvm install latest            // 安裝最新版的nodejs蔼紧,會同時一起安裝對應(yīng)的npm

nvm install 10.24.1            // 安裝指定版本號的nodejs,會同時一起安裝對應(yīng)的npm

nvm ls                        // 查看當(dāng)前已安裝的所有nodejs版本

nvm use 10.24.1                // nodejs版本切換

node -v 查看當(dāng)前node版本
npm -v  查看當(dāng)前npm版本

3.啟動項目
(1)修改.env.development開發(fā)環(huán)境url地址彬犯,地址指向的是本地python Flask項目(spider-admin-pro)的運行地址(需要重啟Vue

修改接口地址

(2)分別啟動vue項目和flask項目(因為vue依賴的是flask的接口)
(2)1躏嚎、啟動接口服務(wù)

$ python dev.py

(2)2菩貌、啟動前端開發(fā)環(huán)境

$ npm run dev

4. 修改Vue項目
我這里主要是添加logo和增加了審核記錄查詢(vue比較熟悉,不多做概述)

  {
    path: "/aipost",
    component: Layout,
    redirect: "/aipost/list",
    name: "system",
    meta: { title: "審核記錄", icon: "log" },
    children: [
      {
        path: "aipost-list",
        name: "aipost-aipost-list",
        component: () => import('@/views/aipost/aipost'),
        meta: { title: "審核記錄", icon: "log" }
      },
    ]
  }
審核記錄的Vue文件.png

后臺UI效果

5. 打包發(fā)布
(1)打包vue項目

$ npm run build:prod

(2)將打包文件夾 拷貝到如下目錄 :dist -> spider_admin_server/spider_admin_pro/web/public
或者直接執(zhí)行命令:npm run dep-pub

二、[二次開發(fā)]:Flask的后端項目spider-admin-pro

spider-admin-pro的目錄結(jié)構(gòu):

.
├── run.py        # 程序入口
├── api           # Controller層
├── service       # Sevice層
├── model         # Model層
├── exceptions    # 異常 
├── utils         # 工具類
└── web           # 靜態(tài)web頁

擴展
peewee: 是Python中的ORM框架嘹叫。
ORM(對象關(guān)系映射)是一種將對象與關(guān)系數(shù)據(jù)庫之間進行映射的技術(shù)(方便數(shù)據(jù)庫的增刪查改)

1. 增加配置路由诈乒,增加api入口,增加server接口服務(wù)
主要完成入口配置喂饥、條件查詢肠鲫、分頁查詢、返回數(shù)據(jù)

# 路由配置
ROUTERS = {
    '/': web,
    "/api/auth": auth_api,
....
    "/api/aiPost": aipost_api
}
#接口服務(wù)
    @classmethod
    def get_aiPost(cls, page=1, size=20, status=None, search=None):

        query = AiPostModel.select()

        if status == 'success':
            query = query.where(AiPostModel.sug == '正常')
        elif status == 'reject':
            query = query.where(AiPostModel.sug == '違規(guī)')

        if search is not None:
            query = query.where(AiPostModel.title.contains(search))

        rows = query.paginate(page, size).dicts()
        total = query.count()

        return {
            'list': rows,
            'total': total
        }

2. 使用ORM框架peewee進行數(shù)據(jù)庫操作(主要是查詢)
確保model字段跟mysql字段一致

# 定義一個模型類 
class AiPostModel(BaseModel):
    """登錄日志"""
    id = AutoField(primary_key=True)

    code = CharField()
    sug = CharField()
    title = CharField()
    newsUrl = CharField()
    imageUrl = CharField()
    msg = CharField()
    creatTime = DateTimeField(default=datetime.datetime.now)

    class Meta:
        database = db
        db_table = 'aipostmodel'  # 與數(shù)據(jù)庫中的表名保持一致

模型基類BaseModel:連接數(shù)據(jù)庫捞高、重連

db_config = {
    'host': '172.50.',
    'port': 3306,
    'user': 'root',
    'password': 'password',
    'database': 'rmzkai',
}
# 同步數(shù)據(jù)庫斷線重連類
class ReconnectMySQLDatabase(ReconnectMixin, MySQLDatabase):
    pass
register_database(ReconnectMySQLDatabase, 'mysql')

# 數(shù)據(jù)庫實例
db = ReconnectMySQLDatabase(**db_config)
class BaseModel(Model):
    class Meta:
        database = db

3 . 打包上傳服務(wù)器并運行

將本地spider_admin_pro項目目錄下所有文件(包含已更新的Vue前端web項目)上傳覆蓋線上項目

覆蓋服務(wù)器上的項目

>. DEBUG

1. 使用Git clone下載spider-admin-pro硝岗,然后pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt完成后袋毙,python dev.py 報錯
In Flask2.3.X, flask.json module deprecated JSONEncoder class, override_json_encoder is not working now. It will raise ImportError: cannot import name 'JSONEncoder' from 'flask.json'
解決:flask降級到2.2.5即可 pip install flask==2.2.5

2. 項目上傳到服務(wù)器后運行報錯

  File "/xmt-env/lib/python3.11/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
peewee.OperationalError: (1045, "Access denied for user 'root'@'cscm-spider' (using password: YES)")

解決:
鏈接MySQL 數(shù)據(jù)庫 : 本地運行host:172.50. 娄猫,傳到服務(wù)器運行直接用 localhost 就行了

db = MySQLDatabase(
    'rmzkai',
    user='root',
    password='password',
    host='localhost ',
    port=3306
)

3. 運行項目gunicorn --bind '172.50.:8000' 'spider_admin_pro.main:app'后關(guān)閉xshell窗口 aiPostList接口報錯
解決 :使用nohup運行
nohup gunicorn --bind '172.50.:8000' 'spider_admin_pro.main:app

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市月幌,隨后出現(xiàn)的幾起案子悬蔽,更是在濱河造成了極大的恐慌,老刑警劉巖录语,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虽缕,居然都是意外死亡蒲稳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門剩胁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祥国,“玉大人,你說我怎么就攤上這事索昂±┙瑁” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵康谆,是天一觀的道長嫉到。 經(jīng)常有香客問我,道長孽锥,這世上最難降的妖魔是什么细层? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盛撑,結(jié)果婚禮上捧搞,老公的妹妹穿的比我還像新娘狮荔。我一直安慰自己介粘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布雅采。 她就那樣靜靜地躺著偎谁,像睡著了一般纲堵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上席函,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天茂附,我揣著相機與錄音,去河邊找鬼营曼。 笑死,一個胖子當(dāng)著我的面吹牛锻全,可吹牛的內(nèi)容都是我干的录煤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼了嚎,長吁一口氣:“原來是場噩夢啊……” “哼廊营!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起夹囚,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤邀窃,失蹤者是張志新(化名)和其女友劉穎假哎,沒想到半個月后鞍历,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡惧蛹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年香嗓,在試婚紗的時候發(fā)現(xiàn)自己被綠了装畅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡像云,死狀恐怖蚂夕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侈贷,我是刑警寧澤等脂,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站嫁蛇,受9級特大地震影響露该,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜解幼,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一撵摆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧特铝,春花似錦、人聲如沸鳄逾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枚抵。三九已至,卻和暖如春李丰,著一層夾襖步出監(jiān)牢的瞬間竖慧,已是汗流浹背逆屡。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砍的,地道東北人莺治。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像谣旁,于是被迫代替她去往敵國和親榄审。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容