一、使用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. Android aar同步Failed to resolve: :nuisdk:

    在app.gradle中android.dependencies同一级别下加入: repositories { flatDir { dirs 'libs' } }

  2. libcurl在windows下的使用

    curl在linux下很好用,但到了windows下写程序却没办法使用了,这时候可以使用libcurl库 libcurl库的编译网上很多,我就不一一赘述了,curl的官方网站:https://curl ...

  3. 201771010123汪慧和《面向对象程序设计JAVA》第九周实验总结

    一.理论部分 1.异常 (1)异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理器. (2)程序中可能出现的错误和问题:a.用户输入错误.b.设备错误.c.物理限制.d.代码错 ...

  4. 图形化编程娱乐于教,Kittenblock实例,为背景添加音乐

    图形化编程娱乐于教,Kittenblock实例,为背景添加音乐 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题 ...

  5. Java学习十四

    学习内容: 1.Junit 2.maven安装配置环境 一.Junit实例演示步骤 1.引入jar包 junit包需要引入hamcrest-core包,否则会报错 2.测试如下代码 package c ...

  6. html属性,上传图片选择时只显示图片文件

    这个实现比较简单,就是用到accept属性: 注意这里我们对这个file元素进行了隐藏,因为它默认呈现是下面这个样子的,并不好看. <div style="display:none;& ...

  7. Bless All

    # php code $i = 2333 $myJXOI = JXOI() while($i == 2333){ ++myJXOI.score , ++myJXOI.rp , --myJXOI.常数 ...

  8. c指针(2)

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct LNode { cha ...

  9. POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]

    传送门:http://poj.org/problem?id=1845 大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有 ...

  10. 计量经济与时间序列_自协方差(AutoCovariance)算法解析(Python)

    1 样本的自协方差函数的通式如下: 2 其实,后面要计算的自相关函数也可以用自协方差来表示: # @author: "Thomas.Shih" # @date: 2018/3/5 ...