当前位置:Gxlcms > 数据库问题 > 《Flask web开发》笔记4:数据库

《Flask web开发》笔记4:数据库

时间:2021-07-01 10:21:17 帮助过:7人阅读

coding: utf-8 from flask import Flask from flask_script import Manager from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config[SQLALCHEMY_DATABASE_URI] = mysql://root@localhost/yxctest #MySQL数据库UILmysql://username:password@hostname/database app.config[SQLALCHEMY_COMMIT_ON_TEARDOWN] = True#实时更新 db = SQLAlchemy(app) #实例化db manager = Manager(app) class User(db.Model): __tablename__ = users #表名 id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(320), unique=True) password = db.Column(db.String(32), nullable=False) def __repr__(self): return <User %r> % self.username if __name__ == __main__: manager.run()

然后在doc输入 Python aa.py shell

接着就可以对这个表进行操作了:

           from aa import db、from aa import User、db.create_all()、user1 = User(username = ‘yxc‘,email=‘123@qq.com‘,password=‘123123‘)

           以上都是doc指令,功能是导入、建表、插入行等;

 

三、实现步骤一中的功能:

很简单,就把这次的建数据库的代码和上一节建Web表单合并一下:

 

bb.py:

# coding: utf-8

import sys
reload(sys)
sys.setdefaultencoding(utf-8)

from flask import Flask, render_template,url_for,session,redirect,flash  
from flask_script import Manager  
from flask_bootstrap import Bootstrap  
from flask_moment import Moment  
from flask_wtf import Form  
from wtforms import StringField, SubmitField  
from wtforms.validators import Required 
from flask_sqlalchemy import SQLAlchemy   #这里导入框架

app = Flask(__name__)

app.config[SQLALCHEMY_DATABASE_URI] = mysql://root@localhost/yxctest     #自己的MySQL账户和建立的表
app.config[SQLALCHEMY_COMMIT_ON_TEARDOWN] = True
#app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True
db = SQLAlchemy(app)           #db实例
bootstrap = Bootstrap(app)
app.secret_key = 1234567

class NameForm(Form):   #Web表中定义的几个片段
    name = StringField(What is your name?, validators=[Required()])
    email = StringField(What is your email, validators=[Required()])
    password = StringField(What is your password, validators=[Required()])
    submit= SubmitField(Submit)


class User(db.Model):     #定义的数据库的表
    __tablename__ = users
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(320), unique=True)
    password = db.Column(db.String(32), nullable=False)

    def __repr__(self):
        return <User %r> % self.username





@app.route(/, methods=[GET, POST])

def index():

    form = NameForm()
    if form.validate_on_submit:
        user = User.query.filter_by(username = form.name.data).first()#查询语句,精确查询输入的name和数据库表中的name比对
        if user is None:
            user = User(username = form.name.data,email=form.email.data,password=form.password.data)#如果不存在,则插入一行
            db.session.add(user)
            db.session.commit()#这两行是必须的
            session[known] = False
        else:
            session[known] = True

        session[name]=form.name.data
        form.name.data = ‘‘
    return render_template(index.html,form=form,name=session.get(name),known = session.get(known,False))



if __name__ == __main__:
    app.run(debug=True)

当然我们的模板渲染也得改一下:

 

index.html:

{% extends "bootstrap/base.html" %}

{% import "bootstrap/wtf.html" as wtf %}
{% block title %}TTTTT{% endblock %}

{% block content %}

<div class="container">
<div class="page-header">
<h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>        
{%if not known%}
<p>Please meet you</p>
{%else%}
<p>Happy see you again</p>
{%endif%}

</div>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}

 

效果:

技术分享

 

      

 

    

       

《Flask web开发》笔记4:数据库

标签:field   data   用户名   session   unique   rect   效果   ext   步骤   

人气教程排行