学习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的操作的总结.适合有一定基础的开发者,最好是按部就班学习的人阅读.因为我认为人生不能永远都是从零开始,那简直就是灾难. ...
随机推荐
- 201803-1 跳一跳 Java
思路: 一个变量plus记录叠加的数,遇到2就+2 import java.util.Scanner; public class Main { public static void main(Stri ...
- B. Odd Sum Segments CF(分割数组)
题目地址 http://codeforces.com/contest/1196/problem/B B. Odd Sum Segments time limit per test 3 seconds ...
- pywin32获得tkinter的Canvas窗口句柄,并在上面绘图
上一篇博文获得主窗口句柄使用的是root.frame或者通过子控件调用master.frame方法,但是子控件本身没有frame方法.那么怎么获得子控件的句柄呢?试过了很多办法,想过把Canvas当作 ...
- 视图家族之视图工具集viewsets
视图家族之视图工具集viewsets 一.视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 cr ...
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- php IP地址转换
<?php $enip = ip2long('210.110.11.49); echo $enip."<br />";//-764540111 echo long ...
- dfs--八皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合法的放置方法. 因为我们 ...
- Struts 2的下载和安装
一.为Web应用增加Struts 2支持 下载和安装Struts 2步骤: 登录http://struts.apache.org/download.cgi站点,下载Struts 2的最新版,下载时有以 ...
- 吴裕雄--天生自然 JAVA开发学习: 循环结构
public class Test { public static void main(String args[]) { int x = 10; while( x < 20 ) { System ...
- LeetCode No.160,161,162
No.160 GetIntersectionNode 相交链表 题目 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 输入:intersectVal ...