#!/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练习题的更多相关文章

  1. 前端和后端的数据交互(jquery ajax+python flask+mysql)

    上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...

  2. 个人学期总结及Python+Flask+MysqL的web建设技术过程

    一个学期即将过去,我们也迎来了2018年.这个学期,首次接触了web网站开发建设,不仅是这门课程,还有另外一门用idea的gradle框架来制作网页. 很显然,用python语言的flask框架更加简 ...

  3. Python+Flask+MysqL的web建设技术过程

    一.前言(个人学期总结) 个人总结一下这学期对于Python+Flask+MysqL的web建设技术过程的学习体会,Flask小辣椒框架相对于其他框架而言,更加稳定,不会有莫名其妙的错误,容错性强,运 ...

  4. 实战接口开发:python + flask + mysql + redis(根据反馈,持续细化更新。。。)

    前言 自动化已经成为测试的必备技能之一了,所以,很多想跳槽的测试朋友都在自学,特别是最实用的接口自动化, 但是很多人因为没有可以练手的项目而苦恼,最终导致缺乏实战经验,其实,完全可以自己开发个简单项目 ...

  5. Python+Flask+MysqL的web技术建站过程

    1.个人学期总结 时间过得飞快,转眼间2017年就要过去.这一年,我学习JSP和Python,哪一门都像一样新的东西,之前从来没有学习过. 这里我就用我学习过的Python和大家分享一下,我是怎么从一 ...

  6. demo项目开发(Python+flask+mysql+redis只包含后端接口)

    [demo项目开发需求] 用户信息管理,可以注册.登录.添加用户.删除用户 注册:任何用户可以注册,对用户提交的注册信息进行校验,返回对应的信息,其中: 用户名:必填,唯一 密码:必填,只能6-12位 ...

  7. Python/ MySQL练习题(一)

    Python/ MySQL练习题(一) 查询“生物”课程比“物理”课程成绩高的所有学生的学号 SELECT * FROM ( SELECT * FROM course LEFT JOIN score ...

  8. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  9. python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示

    python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...

随机推荐

  1. 对shell的简单认识

    shell是一个命令解释器: shell分为交互式shell和非交互式shell: 交互式shell就是命令行一问一答:非交互式shell是像shell文本那样,一次解析文本, 并未在命令行给我们作出 ...

  2. tar打包压缩命令

    1. tar命令 用法: tar [选项...] [FILE]... GNU ‘tar’将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件. 示例 tar -cf archiv ...

  3. Vue.js - day6

    注意: 有时候使用npm i node-sass -D装不上,这时候,就必须使用 cnpm i node-sass -D 在普通页面中使用render函数渲染组件 在webpack中配置.vue组件页 ...

  4. 从零开始利用vue-cli搭建简单音乐网站(七)

    这几天完成了歌曲收藏功能,先看最后效果: 新注册用户:“newuser”,进入“我的音乐界面如下所示” 点击新建歌单,输入:“新歌单”,确认,如下: 目前还没有歌曲,打开音乐界面,点击收藏功能,如下, ...

  5. Jenkins执行shell脚本启动tomcat失败解决方法

    环境:Centos 7 Jenkins版本:2.124 状况:Jenkins会执行服务器某个目录下的Shell, 脚本中功能是复制替换某两个配置文件,然后关闭tomcat,重启Tomcat. 但是,T ...

  6. Nengo 神经网络

    Nengo被加拿大滑铁卢大学的神经学家和软件工程师表示,这是迄今为止产生的世界上最复杂.最大规模的人类大脑模型模拟.这个名叫Spaun的大脑由250万 个模拟神经元组成,它能执行8种不同类型的任务.这 ...

  7. 字符串赋值方式理解 sizeof 和strlen的一些区别

    #include<stdio.h>#include<string.h>  int main(){ int a,i=0; char ch[10000]; while(scanf( ...

  8. mac上使用命令行显示隐藏文件

    终端中输入命令 打开<终端> - 粘贴下面的两行命令执行 defaults write com.apple.finder AppleShowAllFiles TRUEkillall Fin ...

  9. 理解Vue

    Vue.js是JavaScript MVVM(Model-View-ViewModel)库,十分简洁,Vue核心只关注视图层,相对AngularJS提供更加简洁.易于理解的API.Vue尽可能通过简单 ...

  10. WINDOWS-API:操作网络映射盘-WNetAddConnection2

    首先在VC项目属性,开发依赖项里添加MPR.lib:然后,配置文件里填入以下信息.  //本地映射盘符 MapDriver=T: //目标根目录 //MapSharedPath=\\192.168.0 ...