Python Flask+Mysql练习题
#!/usr/bin/python
from flask import Flask,render_template,request,redirect,session
import MySQLdb as mysql con = mysql.connect(host='59.110.**.**',user='woniu',passwd='123456',db='wangjin')
con.autocommit(True)
cur =con.cursor() app = Flask(__name__)
import until
# use random
app.secret_key = 'iouasoiduio89127398981273' @app.route('/')
def index():
if 'user' in session:
cur.execute('select * from user')
res = cur.fetchall()
return render_template('index.html',user=session['user'],users=res)
else:
return redirect('/login') @app.route('/login',methods=['GET','POST'])
def login():
if request.method=='GET':
return render_template('login.html')
elif request.method=='POST':
user = request.form.get('user')
pwd = request.form.get('pwd')
sql = 'select * from user where (username="%s") and (password="%s")'%(user,pwd)
cur.execute(sql)
if cur.fetchone():
session['user'] = user
return redirect('/')
else:
return 'wrong user. or passwd'
@app.route('/delete')
def deleteuser():
user = request.args.get('user')
sql = 'delete from user where username="%s"'%(user)
cur.execute(sql)
return redirect('/') @app.route('/changepw',methods=['GET','POST'])
def changepw():
if request.method == 'GET':
user = request.args.get('user')
print user
print '&'*50
return render_template('changepw.html',user=user)
elif request.method == 'POST':
user = request.form.get('user')
user = request.form.get('user')
print '*'*60
print user
oldpwd = request.form.get('oldpwd')
newpwd = request.form.get('newpwd')
confirmpwd = request.form.get('confirmpwd')
if until.user_dict[user]!=oldpwd:
return 'wrong old password'
if newpwd!=confirmpwd:
return 'new pwd not equal to confirmpwd'
until.changepw(user,newpwd)
return redirect('/') @app.route('/adduser',methods=['GET','POST'])
def adduser():
if request.method == 'GET':
return render_template('adduser.html')
elif request.method =='POST':
user = request.form.get('user')
pwd = request.form.get('pwd')
sql = 'insert into user values ("%s","%s")'%(user,pwd)
cur.execute(sql)
return redirect('/') @app.route('/logout')
def logout():
del session['user']
return redirect('/login') if __name__=="__main__":
app.run(host='0.0.0.0',port=22222,debug=True)
cat until.py
#!/usr/bin/python #from txt to dict
user_dict = {}
def get_data_from_file():
with open('user.txt') as f:
for line in f:
if line == '\n':
continue
(user,pwd) = line.replace('\n','').split(':')
user_dict[user] = pwd
#print user_dict
get_data_from_file() #from dict to txt
def render_file_from_dict():
user_txt_list = []
for item in user_dict.items():
user_txt_list.append('%s:%s'%item)
with open('user.txt','w') as f:
f.write('\n'.join(user_txt_list)) #user_dict['yy'] = 'yy'
#render_file_from_dict() def add_user(user,pwd):
if user and pwd:
if user in user_dict:
return 'user already exist'
else:
user_dict[user] = pwd
render_file_from_dict()
return 'ok'
else:
return 'you need a user or passwd' def del_user(user):
if not user:
return 'you need a username'
if user in user_dict:
del user_dict[user]
render_file_from_dict()
return 'ok'
else:
return 'user not exist' def login(user,pwd):
pass def changepw(user,pwd):
user_dict[user] = pwd
render_file_from_dict()
templates目录下:
cat index.html {% if user=='admin' %}
add user form {% endif %}
<hr >
{{user}}
<a href="/logout">logout</a>
<a href="/adduser">adduser</a> <table border="1">
{% for u in users %}
<tr>
<td>{{u[0]}}</td>
<td>{{u[1]}}</td>
<td>
<a href='/changepw?user={{u[0]}}'>changepw</a>
</td>
<td>
{% if user=='admin' %}
<a href='/delete?user={{u[0]}}'>delete</a>
{% endif %} </td> </tr>: {% endfor %}
</table>
cat login.html
<form method='post' >
user:<input type="text" name='user'>
pwd:<input type="text" name='pwd'>
<input type="submit" value="login"> </form>
cat adduser.html
<form method='post' >
user:<input type="text" name='user'>
pwd:<input type="text" name='pwd'>
<input type="submit" value="add"> </form>
cat changepw.html {{user}} <form method='post' >
<input type='hidden' name='user' value="{{user}}">
oldpwd:<input type='text' name='oldpwd'>
<br >
newpwd:<input type='text' name='newpwd'>
<br >
confirmpwd:<input type='text' name='confirmpwd'>
<br >
<input type='submit' value='update'> </form>
===================================================================================>>>>
===================================================================================>>>>
完全是mysql模块化:
分为 config.py 放置mysql的配置信息
until.py 放置模块的信息
flask_web.py 主题程序
templates 目录下放置html文件
cat flask_web.py
#!/usr/bin/python
from flask import Flask,render_template,request,redirect,session
import MySQLdb as mysql con = mysql.connect(host='59.110.12.72',user='woniu',passwd='123456',db='wangjin')
con.autocommit(True)
cur =con.cursor() app = Flask(__name__)
import until
from until import app_index,app_login,app_delete,app_adduser,app_updatepw,app_getpw
# use random
app.secret_key = 'iouasoiduio89127398981273' @app.route('/')
def index():
if 'user' in session:
return render_template('index.html',user=session['user'],users=app_index())
else:
return redirect('/login') @app.route('/login',methods=['GET','POST'])
def login():
if request.method=='GET':
return render_template('login.html')
elif request.method=='POST':
user = request.form.get('user')
pwd = request.form.get('pwd')
app_user = app_login(user,pwd)
if app_user:
session['user'] = user
return redirect('/')
else:
return 'wrong user. or passwd'
@app.route('/delete')
def deleteuser():
user = request.args.get('user')
app_delete(user)
return redirect('/') @app.route('/changepw',methods=['GET','POST'])
def changepw():
if request.method == 'GET':
user = request.args.get('user')
return render_template('changepw.html',user=user)
elif request.method == 'POST':
user = request.form.get('user')
oldpwd = request.form.get('oldpwd')
newpwd = request.form.get('newpwd')
confirmpwd = request.form.get('confirmpwd')
pwd = list(app_getpw(user)) #这里获取的是个元组,需要转化为str
pwd = ''.join(pwd)
pwd = pwd.strip()
if pwd!=oldpwd:
return 'wrong old password'
if newpwd!=confirmpwd:
return 'new pwd not equal to confirmpwd'
app_updatepw(newpwd,user)
return redirect('/') @app.route('/adduser',methods=['GET','POST'])
def adduser():
if request.method == 'GET':
return render_template('adduser.html')
elif request.method =='POST':
user = request.form.get('user')
pwd = request.form.get('pwd')
app_adduser(user,pwd)
return redirect('/') @app.route('/logout')
def logout():
del session['user']
return redirect('/login') if __name__=="__main__":
app.run(host='0.0.0.0',port=33333,debug=True)
cat config.py
#!/usr/bin/python ST = '59.110.**.**'
DB_PORT = 3306
DB_USER = 'woniu'
DB_PASSWD = '123456'
DB_DBNAME = '*******'
DB_CHARSET = 'utf8'
cat until.py
#!/usr/bin/python
import MySQLdb as mysql
from config import ST,DB_PORT,DB_USER,DB_PASSWD,DB_DBNAME,DB_CHARSET sql_all = 'select * from user'
sql_login = 'select * from user where (username="%s") and (password="%s")'
sql_delete = 'delete from user where username="%s"'
sql_adduser = 'insert into user values ("%s","%s")'
sql_updatepw = 'update user set password="%s" where username="%s"'
sql_getpw = 'select password from user where username="%s"'
#注意%s得加上引号,不然的话会语句报错
Unknown column 'abcd' in 'field list' def app_index():
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_all)
res = cur.fetchall()
cur.close()
con.close()
return res def app_login(username,passwd):
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_login%(username,passwd))
res = cur.fetchone()
cur.close()
con.close()
return res def app_delete(username):
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_delete%(username))
res = cur.fetchone()
cur.close()
con.close() def app_adduser(username,passwd):
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_adduser%(username,passwd))
res = cur.fetchone()
cur.close()
con.close() def app_updatepw(passwd,username):
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_updatepw%(passwd,username))
res = cur.fetchone()
cur.close()
con.close() def app_getpw(username):
con = mysql.connect(host=ST,port=DB_PORT,user=DB_USER,passwd=DB_PASSWD,db=DB_DBNAME,charset=DB_CHARSET)
con.autocommit(True)
cur =con.cursor()
cur.execute(sql_getpw%(username))
res = cur.fetchone()
cur.close()
con.close()
return res
Python Flask+Mysql练习题的更多相关文章
- 前端和后端的数据交互(jquery ajax+python flask+mysql)
上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...
- 个人学期总结及Python+Flask+MysqL的web建设技术过程
一个学期即将过去,我们也迎来了2018年.这个学期,首次接触了web网站开发建设,不仅是这门课程,还有另外一门用idea的gradle框架来制作网页. 很显然,用python语言的flask框架更加简 ...
- Python+Flask+MysqL的web建设技术过程
一.前言(个人学期总结) 个人总结一下这学期对于Python+Flask+MysqL的web建设技术过程的学习体会,Flask小辣椒框架相对于其他框架而言,更加稳定,不会有莫名其妙的错误,容错性强,运 ...
- 实战接口开发:python + flask + mysql + redis(根据反馈,持续细化更新。。。)
前言 自动化已经成为测试的必备技能之一了,所以,很多想跳槽的测试朋友都在自学,特别是最实用的接口自动化, 但是很多人因为没有可以练手的项目而苦恼,最终导致缺乏实战经验,其实,完全可以自己开发个简单项目 ...
- Python+Flask+MysqL的web技术建站过程
1.个人学期总结 时间过得飞快,转眼间2017年就要过去.这一年,我学习JSP和Python,哪一门都像一样新的东西,之前从来没有学习过. 这里我就用我学习过的Python和大家分享一下,我是怎么从一 ...
- demo项目开发(Python+flask+mysql+redis只包含后端接口)
[demo项目开发需求] 用户信息管理,可以注册.登录.添加用户.删除用户 注册:任何用户可以注册,对用户提交的注册信息进行校验,返回对应的信息,其中: 用户名:必填,唯一 密码:必填,只能6-12位 ...
- Python/ MySQL练习题(一)
Python/ MySQL练习题(一) 查询“生物”课程比“物理”课程成绩高的所有学生的学号 SELECT * FROM ( SELECT * FROM course LEFT JOIN score ...
- python/MySQL练习题(二)
python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...
- python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示
python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...
随机推荐
- BIO,NIO,AIO总结
熟练掌握 BIO,NIO,AIO 的基本概念以及一些常见问题是你准备面试的过程中不可或缺的一部分,另外这些知识点也是你学习 Netty 的基础. BIO,NIO,AIO 总结 1. BIO (Bloc ...
- Ionic之$scope 依赖注入报错
在开发Ionic过程中,发现会报在 LoginController 中引用locals报错,具体报错问题: ionic.bundle.js:19526 Error: [$injector:unpr] ...
- oracle删除数据库表空间
步骤一: 删除user drop user ×× cascade 说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的. 步骤二: 删 ...
- Oracle/MySql/SQL Sqlserver分页查询
简述 简单概括一下Oracle,MySql,SQL Sqlserver这三个数据库的分页查询语句. Oracle分页查询 例:每页显示两条数据,现在要查询第二页,也就是第3-4条数据. 查询语句: s ...
- Oracle查询排序asc/desc 多列 order by
查询结果的排序 显示EMP表中不同的部门编号. 如果要在查询的同时排序显示结果,可以使用如下的语句: SELECT 字段列表 FROM 表名 WHERE 条件 ORDER BY 字段名1 [ASC|D ...
- this详解,对执行上下文说 Yes
this 指向多变,很多隐蔽的 bug 都缘于它.与此同时,this 强大灵活,如果能熟练驾驭,就会写出更简洁.优雅的代码. 社区上对于 this 的讲解虽然不少,但缺乏统一梳理. this 相关知识 ...
- gcc&g++
原文章 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为是c++程序,注 ...
- powershell 根据错误GUID查寻错误详情
使用azurepowershell 部署模板时,碰到了下面类似的问题: The template deployment 'ExampleDeployment-' is not valid accord ...
- IT之家学院:使用CMD命令行满速下载百度云
转自:https://www.toutiao.com/a6545305189685920259/?tt_from=android_share&utm_campaign=client_share ...
- 异步 BeginInvoke
委托的异步调用异步多线程的三大特点:1.同步方法卡界面,原因是主线程被占用:异步方法不卡界面,原因是计算交给了别的线程,主线程空闲2.同步方法慢,原因是只有一个线程计算:异步方法快,原因是多个线程同事 ...