一、使用pymysql模块操作MYSQL

导入pymysql模块: pip install pymysql

1、增删改

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', '', 18, 175.2])  # 为占位符%s赋值
print(num)
# 提交事务
conn.commit()
# 关闭资源
cursor.close()
conn.close()

2、查询

# 获取游标,相当于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'])

二、Flask使用

https://dormousehole.readthedocs.io/en/latest/         Flask中文手册地址

导入Flask模块: pip install flask

  • 第一个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.html

使用蓝图前,所有代码放在一个py文件中。

第一步:新建多个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'

学习python-20191108(1)Mysql、Flask的更多相关文章

  1. Flask 学习篇一: 搭建Python虚拟环境,安装flask,并设计RESTful API。

    前些日子,老师给我看了这本书,于是便开始了Flask的学习 GitHub上的大神,于是我也在GitHub上建了一个Flask的项目. 有兴趣可以看看: https://github.com/Silen ...

  2. 在学习python的Django\Flask\Tornado前你需要知道的,what is web?

    我们都在讲web开发web开发,那到底什么是web呢? 如果你正在学习python三大主流web框架,那这些你必须要知道了 软件开发架构: C/S架构:Client/Server    客户端与服务端 ...

  3. 国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

  4. Python 每日一练 | Flask 实现半成品留言板

    留言板Flask实现 引言 看了几天网上的代码,终于写出来一个半成品的Flask的留言板项目,为什么说是半成品呢?因为没能实现留言板那种及时评论刷新的效果,可能还是在重定向上有问题 或者渲染写的存在问 ...

  5. 学习python须知,Python基础进阶需掌握哪些知识点?

    Python基础进阶需要掌握哪些知识点?Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利.Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务 ...

  6. 在学习python的过程中,遇到的最大的困难是什么?

    本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...

  7. 分四个阶段学习python并找到一份好工作

    第一阶段 关注公众号"轻松学编程"了解更多. 详细学习资料 需要时间一个月. 1.python概念 ​ python是一种解释型.面向对象.动态数据类型的高级程序语言. ​ 理解: ...

  8. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  9. 使用Python编程语言连接MySQL数据库代码

    使用Python编程语言连接MySQL数据库代码,跟大家分享一下: 前几天我用python操作了mysql的数据库,发现非常的有趣,而且python操作mysql的方法非常的简单和快速,所以我把代码分 ...

  10. python针对于mysql的增删改查

    无论是BS还是CS得项目,没有数据库是不行的. 本文是对python对mysql的操作的总结.适合有一定基础的开发者,最好是按部就班学习的人阅读.因为我认为人生不能永远都是从零开始,那简直就是灾难. ...

随机推荐

  1. 在excel中评估模型性能

    一直在用的结果, 从代码中整理出来. 评分卡模型的结果一般在excel中即可计算完成. 下面是在number中计算评分卡模型的性能(KS/AUC), 表格中百分数省略%

  2. POJ 1258:Agri-Net Prim最小生成树模板题

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45050   Accepted: 18479 Descri ...

  3. c++静态库和动态库的添加

    # 声明要求的 cmake 最低版本cmake_minimum_required(VERSION 2.8)# 声明一个 cmake 工程project(helloSLAM) # 设置编译模式set( ...

  4. 从定时器的选型,到透过源码看XXL-Job(上)

    此内容来自一位好朋友的分享,也是当初建议我写博客提升的朋友.内容只做转载,未做修改. 定时任务选型 背景 目前项目定时任务采用Spring Task实现,随着项目需求的迭代,新增的定时任务也越来越多. ...

  5. 取石子游戏(gcd)

    蒜头君和花椰妹在玩一个游戏,他们在地上将n颗石子排成一排,编号为1到n.开始时,蒜头君随机取出了2颗石子扔掉,假设蒜头君取出的2颗石子的编号为a, b.游戏规则如下,蒜头君和花椰妹2人轮流取子,每次取 ...

  6. 吴裕雄--天生自然 PYTHON3开发学习:基础语法

    #!/usr/bin/python3 # 第一个注释 print ("Hello, Python!") # 第二个注释 #!/usr/bin/python3 # 第一个注释 # 第 ...

  7. KMP算法复杂度证明

    引言 KMP算法应该是看了一次又一次,比赛的时候字符串不是我负责,所以学到的东西又还给网上的博客了-- 退役后再翻开看,看到模板,心想这不是\(O(n^2)\)的复杂度吗? 有两个循环也不能看做是\( ...

  8. LeetCode——735.行星碰撞

    给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相同的速度移动. 找出 ...

  9. 设置R更新源

    命令行设置R更新源 创建文件 R.home()/etc/Rprofile.site 设置更新源 local({r <- getOption("repos") r[" ...

  10. 401认证钓鱼demo

    <?php //@b4dboy if(!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) ...