一、使用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. D14 集合set 函数def

    把 字符串  元祖 变成集合的方法   因为列表是可变的所以不能变为集合 # s=set('hello')# print(s)## s=set(['alex','alex','sb'])# print ...

  2. Dynamics CRM - 在 C# Plugin 里以 System Administrator 权限来更新 Entity

    场景说明: 1.在使用 CRM 系统时,经常会有需要在某个 Entity 下对其他 Entity 的 Record 进行更新,或者在 post 中对自身进行更新,这里就需要用到 SDK 上的 upda ...

  3. 109.大型的csv文件的处理方式

    HttpResponse对象将会将响应的数据作为一个整体返回,此时如果数据量非常大的话,长时间浏览器没有得到服务器的响应,就会超过默认的超时时间,返回超时.而StreamingHttpResponse ...

  4. jquery 第一节 什么是jQuery

    简单来说,jQuery就是javascript的一个框架,也可以说是javascript的一个库.

  5. 饭卡(DP)

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额. 如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大 ...

  6. Mybatis学习——Mybatis入门程序

    MyBatis入门程序 一.查询用户 1.使用客户编号查询用户 (1).创建一个数据表 USE spring; #创建一个名为t_customer的表 CREATE TABLE t_customer( ...

  7. LGOJ3879 TJOI2010 阅读理解

    不可否认,\(TJOI\)的这道题确实不难 为本题写博客的唯一原因就是 \(STL\)大法好!!!! Description link 不简述题意了,因为实在是简单 Solution 直接\(map& ...

  8. flask框架-下

    Local与偏函数 threasing.local 多个线程修改同一个数据,复制多份变量给每个线程用,为每个线程开辟一块空间进行数据存储. 不使用therading.local # 不用local f ...

  9. iterm2 粘贴时有多余字符 0~ 1~

    https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/31 printf '\e[?2004l'

  10. Opencv笔记(十二)——形态学转换

    学习目标: 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 我们要学习的函数有: cv2.erode(), cv2.dilate(), cv2.morphologyEx()等 原理简介: 形态 ...