安裝 pycharm pycharm 老樣子還是要安裝一下 vim 的 plugin , 設定方法跟以前 android studio 一模一樣就懶得寫了 , 直接偷看以前寫得比較快
安裝 anaconda 整合環境 chocolate 直接安裝 anaconda3
需要加入 condabin
環境變數
1 C:\tools\Anaconda3\condabin
操作參考自
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #查 conda 環境 conda env list #安裝一個 python3.9 的環境在 conda 上 conda create --name flaskenv python=3.7 #啟動 conda 環境 activate flaskenv #安裝 flask 在目前環境上 conda install flask -y conda install flask-restful -y conda install Flask-SQLAlchemy -y conda install pymssql -y #看目前環境的 python 裝了什麼套件 conda list #離開目前環境 deactivate # conda env remove --name flaskenv
整合 pycharm 參考老外
隨便開個空資料夾 , 接著依照下列設定去 configFile
=> Settings
=> Project
=> Python Interpreter
=> Conda Environment
=> Existing environment
=>C:\tools\Anaconda3\envs\flaskenv\python.exe
=> => C:\tools\Anaconda3\Scripts\conda.exe
=> Make available to all projects
搞定後再 pycharm 開啟 terminal 看看是否長這樣 , 是的話就搞定了
1 (flaskenv) C:\Users\GG\test_flask>
傳統安裝 python 載點
chocolate 安裝 python 懶得設定環境變數跟阿撒布魯的話直接偷懶用 chocolate 也是個不錯的選擇
建立虛擬環境 以前寫 python 2.7 時都沒使用虛擬環境 , 每次都搞得整台電腦亂七八糟的 , 現在乖乖用吧
斷網安裝 selenium 先在有網路的環境執行以下指令 , 看看有無正常下載 , 然後加入到 7zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 mkdir yourfolder # 沒加環境變數就用下面這句然後把 yourfolder 壓到 7zip python -m pip download selenium -d yourfolder Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/8/10 下午 04:37 18857 async_generator-1.10-py3-none-any.whl -a---- 2022/8/10 下午 04:37 58795 attrs-22.1.0-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 160247 certifi-2022.6.15-py3-none-any.whl -a---- 2022/8/10 下午 04:37 179079 cffi-1.15.1-cp39-cp39-win_amd64.whl -a---- 2022/8/10 下午 04:37 2422362 cryptography-37.0.4-cp36-abi3-win_amd64.whl -a---- 2022/8/10 下午 04:37 58155 h11-0.13.0-py3-none-any.whl -a---- 2022/8/10 下午 04:37 61160 idna-3.3-py3-none-any.whl -a---- 2022/8/10 下午 04:37 9726 outcome-1.2.0-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 118697 pycparser-2.21-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 55833 pyOpenSSL-22.0.0-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 16725 PySocks-1.7.1-py3-none-any.whl -a---- 2022/8/10 下午 04:37 985827 selenium-4.4.0-py3-none-any.whl -a---- 2022/8/10 下午 04:37 10033 sniffio-1.2.0-py3-none-any.whl -a---- 2022/8/10 下午 04:37 29575 sortedcontainers-2.4.0-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 358991 trio-0.21.0-py3-none-any.whl -a---- 2022/8/10 下午 04:37 16980 trio_websocket-0.9.2-py3-none-any.whl -a---- 2022/8/10 下午 04:37 139901 urllib3-1.26.11-py2.py3-none-any.whl -a---- 2022/8/10 下午 04:37 24203 wsproto-1.1.0-py3-none-any.whl
在斷網環境跑以下指令 , 遇到斷網環境真的會想撞牆 , 機器不一致還是很有可能會爆掉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #建立虛擬環境 python -m venv env_selenium #啟動虛擬環境 cd .\env_selenium\ .\Scripts\activate #離開的話這樣 #deactivate #安裝看看注意自己的路徑在哪 pip install ../yourfolder/selenium-4.4.0-py3-none-any.whl -f ../yourfolder --no-index #如果噴這類錯誤可能是 python 版本不正確 , 要確定自己機器與離線環境機器的版本是否相同 #ERROR: Could not find a version that satisfies the requirement cffi>=1.14; os_name == "nt" and implementation_name != "pypy" (from trio~=0.17->selenium==4.4.0) (from versions: none) #最後跑看看 python from selenium import webdriver
安裝 flask 常用的 lib 1 2 3 4 5 6 pip install flask pip install flask-restful pip install Flask-SQLAlchemy pip install pymssql #萬一炸了可以到此找看看 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql #將下載的 whl 丟到專案內這樣安裝 pip install pymssql-2.1.5-cp36-cp36m-win_amd64.whl
檢查 dependency 在資料夾底下新增 requirements.txt
執行以下命令
helloworld 感覺每次都要寫 jsonify 還滿麻煩的 , 不過因為是弱類型的語言 , 寫起來真的好快 , 7 行就做完了 , 特別適合我這種低能兒 , 感動!
1 2 3 4 5 6 7 8 9 10 from flask import Flask , jsonify , request app = Flask(__name__) @app.route('/', methods=['GET']) def helloworld(): return jsonify({'helloworld' : 'helloworld'}) if __name__ == "__main__": app.run()
pymssql helloworld 隨便蓋張表
1 2 3 4 5 6 7 8 9 CREATE TABLE [dbo].[Card]( [Id ] [int ] NOT NULL , [Num ] [int ] NULL , CONSTRAINT [PK_Customer_Card] PRIMARY KEY CLUSTERED ( [Id ] ASC )WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] ) ON [PRIMARY] GO
新增 card
類別 , 這邊也雷很久 , 因為預設不能直接輸出成 json , 從一個生態系換到其他生態系明明很多很簡單的問題 , 實際上卻很低能 , 所以參考邢烽朔解答 注意這邊最重要就是 as_dict
這句 , 用他才可以轉成 json , 結果雷了兩小時後面課程也用一樣的解法 , 天下文章一大抄就對了 注意這邊的類別最好補上 __tablename__
防止 mapping 的時候發生錯誤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from test import db class Card(db.Model): __tablename__ = 'Card' id = db.Column(db.Integer, primary_key=True) Num = db.Column(db.Integer) def as_dict(self): return {item.name: getattr(self, item.name) for item in self.__table__.columns} def __repr__(self): return "id={}, Num={}".format( self.id, self.Num )
設定撈資料的類別
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from flask import Flask , jsonify , request from flask_restful import Resource from test.model.card import Card from test import db import json class Helloworld(Resource): def get(self): list = [] cards = db.session.query(Card).all() for x in cards : list.append(x.as_dict()) return jsonify(list)
後來看課程才發現有這種淫蕩的寫法
1 return [x.as_dict() in cards]
設定 __init__.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from flask import Flask from flask_restful import Api from flask_sqlalchemy import SQLAlchemy import pymssql # from flask_migrate import Migrate db = SQLAlchemy() from demo.resource.helloworld import Helloworld from demo.model.card import Card def create_app(): app = Flask(__name__) api = Api(app) # app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///demo.db" # app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/demo' app.config['SQLALCHEMY_DATABASE_URI'] = "mssql+pymssql://sa:yourpassword@localhost/test" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) api.add_resource(Helloworld, '/') return app
模組化 init .py python 的模組化還滿奇怪的要先建個資料夾接著加入 __init__.py
的空文件 然後引用方法大概長這樣
1 from test.resource.gg import Helloworld
gg.py => 被引用的檔案 test.resource => 資料夾名稱 , 有點像 java 的 package or c# namespace , 但是又不倫不類 Helloworld => 類別名稱
flask run 這個雷超久 , 看 udemy 上面是用 mac , 自己在 windows 跑雷暴 , 原來只要在 cmd 下這樣就好
1 2 set FLASK_APP=test:create_app()flask run
flask shell 這鬼東西可以直接跑一些有的沒的 , 想先測試程式就靠他
用 windows 開 python 會自動開啟 Microsoft Store 只需要把環境變數的 python 調整到 WindowsApps 之前即可 C:\Python36 C:\Users\YourName\AppData\Local\Microsoft\WindowsApps