python基于flask虚拟环境下操控MYSQL(一)

项目的初步建设

== 写这的目的是为了记录小白在flask(windows)利用MYSQL的知识 ==
总共建立5个文件:demo8.py(任意名称)(主文件,完成登陆功能),config.py(放置插件),exts.py(存储第三方库),manage.py(管理)models.py(放置模型)

#demo8.py   完成flask的基本框架
from flask import Flask,render_template,request,redirect,url_for,session
from flask_sqlalchemy import SQLAlchemy
import config

app  = Flask(__name__)
app.config.from_object(config)

@app.route('/')
def index():
    return render_template('demo.html')

#实现用户登陆的功能
@app.route('/login/',methods = ['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('demo.html')
    else:
        id = request.form.get('id')
        password = request.form.get('password')
        user = User.query.filter(User.password == password).first()
        if user:
            session['user_id'] = user.id
            return redirect(url_for('index'))
        else:
            return  u'您输入的学号或者密码错误'

if __name__=='__main__':
    app.run(debug=True)
为了简化主文件的检查,建立放置插件的文件(这个习惯有利于以后遇见代码错误,方便回头检测)
#config.py
import os

#DEBUG可以更加清晰地指出代码错误所在位置
DEBUG = True

#SECRET_KEY:
#函数加密,session加密
SECRET_KEY = os.urandom(24)

#数据库的基本信息填写
hostname = '127.0.0.1'
port = '3307'  #正常端口是3306,在此之前我已经占了,故改为3307
datebase = 'xsjz' #在代码实行前,自己需要先创立一个新的或填已存在的数据库名
usename = 'root'
password = 'root'


#mysqldb已经不支持python3及以后的版本连接数据库,此处使用了Pymysql
#数据库连接操作
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(usename,password,hostname,port,datebase)
SQLALCHEMY_DATABASE_URI = DB_URI

SQLALCHEMY_TRACK_MODIFICATIONS = True

DEBUG = True

在Flask中使用ORM

建立专门存放第三方库的初始信息
#存放第三方扩展包的初始化信息

#SQLAlchemy是flask用于数据库连接的ORM模式的第三方库
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
创建模型
from exts import db

#这里db.Model是强制要求这样填写,具体解释可查看SQLAlchemy的源代码
class User(db.Model):
     #建立数据库的表
     __tablename__ = 'user'
     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
     password = db.Column(db.String(100), nullable=False)
     username = db.Column(db.String(50), nullable=False)
管理
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from demo8 import app
from exts import db #db = SQLAlchemy()
from models import User #导入要映射的模型

#让python支持命令行工作
manager = Manager(app)

#使用Migrate绑定app和db
migrate = Migrate(app,db)

#添加迁移脚本的命令到manager中,添加Migrate所有子命令到db下
manager.add_command('db',MigrateCommand)

if __name__ == "__main__":
    manager.run()

此时在python端的任务已经全部完成,开始进行迁移文件

在此之前还需要进行开启虚拟环境的操作,打开终端cmd(win+R)

virtualenv\flask-env\Scripts

这是我当时虚拟环境的安装路径,找到你的activate文件所存在的位置
在这里插入图片描述
这里显示(flask-env)就代表成功进入虚拟环境,此时咱们就可以正式开始数据库迁移了
在这里插入图片描述

1.使用数据库迁移可以直接建表,而不是自己通过sql建立表,就是将关系型数据库的一张张表转化为Python中的一个个类。
2.可以追踪数据库的操作变化
1. 第一次进行迁移需要的操作( 在迁移工作前都需要先打开虚拟环境,且切到该文件的运行路径 == )
建立迁移仓库

python manage.py db init
操作成功后的情景
在这里插入图片描述
在这里插入图片描述
操作第一次后,就不需要再迁移初始化,但是第二个命令和第三个命令每次都要使用
2. 读取models.py中类的内容,生成版本文件,但并没有真正在数据库中添减;
python manage.py db migrate
在这里插入图片描述
此处是版本号,但并没有真正映射到数据库
在这里插入图片描述
*3.*真正迁移应用于数据库
python manage.py db upgrade
在这里插入图片描述

就此通过ORM完成数据库里表的建立就此完成

在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值