學習python-20191108(1)Mysql、Flask

1、使用pymysql模塊操做MYSQLhtml

導入pymysql模塊: pip install pymysqljava

一、增刪改python

import pymysql # 定義數據庫鏈接信息
config = {     'host''localhost',     'port': 3306,     'user''root',     'password''',     'database''python',     'charset''utf8' } # 獲取鏈接
conn = pymysql.connect(**config) # 獲取遊標,至關於java中的Statement
cursor = conn.cursor() # 執行sql
sql = '''     insert into t_user       (username,password,age,height)     values       (%s,%s,%s,%s)  ''' num = cursor.execute(sql, ['alice''123', 18, 175.2])  # 爲佔位符%s賦值
print(num) # 提交事務
conn.commit() # 關閉資源
cursor.close() conn.close()

二、查詢mysql

# 獲取遊標,至關於java中的Statement
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 能夠指定cursor的類型爲字典,查詢
結果爲Dict類型 # 執行sql
sql = '''     select         id,username,password,age,height     from t_user    ''' cursor.execute(sql) # 獲取查詢結果 # print(cursor.fetchone())  # 每次讀取一條,返回的是元組 # print(cursor.fetchmany(2))  #  獲取多條 # print(cursor.fetchall())   # 獲取全部
for u in cursor.fetchall():     print(u['username'], u['age'])

 

2、Flask使用sql

https://dormousehole.readthedocs.io/en/latest/         Flask中文手冊地址數據庫

導入Flask模塊: pip install flaskjson

  • 第一個Flask程序
from flask import Flask # 建立一個app,即一個Flask應用
app = Flask(__name__) # 定義路由,相似於SpringMVC中的@RequestMapping
@app.route('/') def hello_world(): return '<h1 style="color:red">Hello World</h1>' @app.route('/welcome') def welcome(): return 'welcome to flask'

# 啓動應用 port=8888  自定義端口號,debug=True 開啓debug模式
if __name__ == '__main__': app.run(port=8888, debug=True)
  • 請求參數
# Get請求
@app.route('/test_get') def test_get(): a = request.args.get('a') # 若是網頁打開時只傳入參數a,未傳入參數b時,b默認爲666
    b = request.args.get('b', default=666) print(a, b) return 'get'
# Post請求
@app.route('/test_post', methods=['post', 'get'])  # 默認只接收GET請求,經過methods指定接收的請求方式
def test_post(): a = request.form['a'] b = request.form['b'] print(a, b) return 'post'
  • 文件上傳
@app.route('/load_form') def load_form(): return ''' <form action="upload" method="post" enctype="multipart/form-data"> file: <input type="file" name="file"> <input type="submit" value="上傳"> </form> ''' @app.route('/upload', methods=['post']) def upload(): # 獲取上傳的文件
    file = request.files['file'] # print(type(file)) # FileStorage類型
    # print(file.filename, len(file.read()), file.content_type)
    # time.strftime('%Y%m%d%H%M%S')獲得年月日時分秒值,str(random.randint(1, 100))獲得一個1到100間的隨機數
    save_path = time.strftime('%Y%m%d%H%M%S') + str(random.randint(1, 100)) + file.filename file.save(save_path) return 'success'
  • 響應
from flask import Flask, request, redirect, jsonify
import time
import random
from flask import render_template

app = Flask(__name__)


# 響應html
@app.route('/test_html')
def test_html():
return '''
<h1>html</h1>
'''


# 重定向
@app.route('/test_redirect')
def test_redirect():
return redirect('/test_html')


# 響應json
@app.route('/test_json')
def test_json():
user = {'id': 1001, 'name': 'tom', 'age': 18, 'sex': 'male'}
return jsonify(user)


# 響應模板頁
@app.route('/test_template')
def test_template():
return render_template('hello.html') # 指定模板文件名,默認在當前目錄下的tempaltes中查找


if __name__ == '__main__':
app.run(debug=True)
 
 
  • Jinja2模板語法    Jinja2網站https://palletsprojects.com/ 
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): name = 'tom' age = 81 users = [ {'id': 1001, 'name': 'tom', 'age': 18, 'sex': 'male'}, {'id': 1002, 'name': 'jack', 'age': 28, 'sex': 'female'}, {'id': 1003, 'name': 'alice', 'age': 38, 'sex': 'male'} ] return render_template('result.html', username=name, age=age, users=users) --result.html中部分代碼--
<body> result.html <br> username:{{username}} <br> {% if age>60 %} 老年 {% elif age>30 %} 中年 {% elif age>18 %} 少年 {% else %} 童年 {% endif %} <br>
    <ul> {% for user in users %} <li>{{user.id}},{{user.name}},{{user.sex}}</li> {% endfor %} </ul>

</body>
# 全局異常處理 出現404錯誤,自動跳轉到自定義的404.html網頁去
@app.errorhandler(404) def error_handler(e): print(e) return render_template('404.html')
  •  藍圖   使用藍圖實現模塊化

https://dormousehole.readthedocs.io/en/latest/tutorial/views.htmlflask

使用藍圖前,全部代碼放在一個py文件中。app

第一步:新建多個py文件,把同一對象的相關操做放到一個獨立的py文件中,這些獨立的py文件就是一個個藍圖;框架

第二步:在主程序的py文件中註冊藍圖,創建主程序與這些獨立的py文件的關聯。

下方爲主程序的py文件

from flask import Flask from py07_Flask框架.user_controller import user from py07_Flask框架.product_controller import product app = Flask(__name__) # 註冊藍圖
app.register_blueprint(user) app.register_blueprint(product) if __name__ == '__main__': app.run(debug=True)

下方爲兩個藍圖(py文件):user_controller.py和product_controller.py

#product_controller.py文件內容
from flask import Blueprint product = Blueprint('product', __name__) @product.route('/product_list') def product_list(): return 'product_list'
---------------------------------------------------------
#user_controller.py文件內容
from flask import Blueprint # 建立藍圖
user = Blueprint('user', __name__) # 定義藍圖路由
@user.route('/user_list') def user_list(): return 'user_list'
相關文章
相關標籤/搜索