学习python-20191108(1)Mysql、Flask
一、使用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的更多相关文章
- Flask 学习篇一: 搭建Python虚拟环境,安装flask,并设计RESTful API。
前些日子,老师给我看了这本书,于是便开始了Flask的学习 GitHub上的大神,于是我也在GitHub上建了一个Flask的项目. 有兴趣可以看看: https://github.com/Silen ...
- 在学习python的Django\Flask\Tornado前你需要知道的,what is web?
我们都在讲web开发web开发,那到底什么是web呢? 如果你正在学习python三大主流web框架,那这些你必须要知道了 软件开发架构: C/S架构:Client/Server 客户端与服务端 ...
- 国内某Python大神自创完整版,系统性学习Python
很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...
- Python 每日一练 | Flask 实现半成品留言板
留言板Flask实现 引言 看了几天网上的代码,终于写出来一个半成品的Flask的留言板项目,为什么说是半成品呢?因为没能实现留言板那种及时评论刷新的效果,可能还是在重定向上有问题 或者渲染写的存在问 ...
- 学习python须知,Python基础进阶需掌握哪些知识点?
Python基础进阶需要掌握哪些知识点?Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利.Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务 ...
- 在学习python的过程中,遇到的最大的困难是什么?
本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...
- 分四个阶段学习python并找到一份好工作
第一阶段 关注公众号"轻松学编程"了解更多. 详细学习资料 需要时间一个月. 1.python概念 python是一种解释型.面向对象.动态数据类型的高级程序语言. 理解: ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- 使用Python编程语言连接MySQL数据库代码
使用Python编程语言连接MySQL数据库代码,跟大家分享一下: 前几天我用python操作了mysql的数据库,发现非常的有趣,而且python操作mysql的方法非常的简单和快速,所以我把代码分 ...
- python针对于mysql的增删改查
无论是BS还是CS得项目,没有数据库是不行的. 本文是对python对mysql的操作的总结.适合有一定基础的开发者,最好是按部就班学习的人阅读.因为我认为人生不能永远都是从零开始,那简直就是灾难. ...
随机推荐
- Thread--生产者消费者
2个生产者,2个消费者,库存容量2 package p_c_allWait.copy; import java.util.LinkedList; import java.util.List; publ ...
- gradle配置多个代码仓库repositories
repositories { mavenCentral() maven { url "https://jitpack.io" } maven { url "http:// ...
- JZOJ-TG817-A-solution
T1 考虑是否有一种排序方法使得最优解都相邻,这种排序方法就是按照过一个点x的斜率为(P/Q)的直线的截距 排序之后考虑临项即可,O(N) T2 exit
- Springboot JpaRepository findOne() 方法报错
用的是springboot2.0,然后XXXRepository.findOne各种报错,各种不行,上网搜都说改回springboot1.5就好了. 这哪行,直接用XXXRepository.find ...
- LocalStorage基础知识小结
cookie中每条cookie的存储空间为4k,localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同. localStorage的写入,loca ...
- mysql查看整库个表详情
information_schema.tables字段说明 字段 含义 Table_catalog 数据表登记目录 Table_schema 数据表所属的数据库名 Table_name 表名称 Tab ...
- Java static 静态代码块、代码块
简述 static{} 静态代码块,加载类之前执行 {} 代码块,每次new的时候都会被执行 示例 类: public class Student { int age; String name; bo ...
- jq轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 反射(hasattr和setattr和delattr)
反射(hasattr和setattr和delattr) 一.反射在类中的使用 反射就是通过字符串来操作类或者对象的属性, 反射本质就是在使用内置函数,其中反射有以下四个内置函数: hasattr:通过 ...
- 洛谷 P2622 关灯问题II【状压DP】
传送门:https://www.luogu.org/problemnew/show/P2622 题面: 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的 ...