Mysql安装和操作(Flask)

又踏上了组内任务的征程

这里主要记录数据库在flask中的使用,感觉数据库很重要啊!

mysql在windows的安装

安装的具体操作

以管理员身份启动CMD
进入mysql的bin文件夹,依次进行如下操作 mysql-5.7.18-winx64,提取密码:ytue
第一行:初始化mysql(自动产生data文件,复制临时密码)
第二行:安装服务
第三行:和启动服务
第四,五行:进入mysql(用复制的临时密码进入mysql)
第六行:修改密码
第七行:查看数据库默认字符集

mysqld --initialize --user=mysql --console
mysqld  -install
net start mysql
G:databasemysqlin>mysql -u root -p
Enter password: ************
mysql> alter user root@localhost identified by "你要修改的密码";
mysql> show variables like 'character%';

一些基本mysql操作命令

show database; #打印存在的数据库
create database test; #新建名为test的数据库
show tables from test;  #返回test数据库下的所有表的名称

mysql在flask的配置操作

配置代码

这是用的是SQLAlchemy,所需要的库需要提前配置
这里登陆的是root用户,要填上自己的密码,MySQL的默认端口是3306,填上之前创建的数据库名
第四行是设置每次请求结束后都会自动提交数据库中的变动
第五行进行实例化

app = Flask(__name__)
app.config['SECRET_KEY'] ='hard to guess'
app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:数据库密码@localhost:3306/blog' 
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True 
db = SQLAlchemy(app) 

设置模型类

SQLAIchemy不但允许我们根据数据库表结构创建数据模型--models
它也允许我们根据数据模型创建数据库表结构

Role

class Role(db.Model):
    # 定义表名
    __tablename__ = 'roles'
    # 定义列对象
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    user = db.relationship('User', backref='role')#关联user模型,并在user中添加反向

User

class User(db.Model):
    __tablename__="users"
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(50),unique=True,index=True)
    password=db.Column(db.String(50))
    email=db.Column(db.String(100)) #id,username,password,email
    role_id=db.Column(db.Integer,db.ForeignKey("roles.id"))#外键指向roles表中的id列
from flask.ext.script import Manager
from flask.ext.sqlalchemy import SQLAlchemy
import pymysql


mamager=Manager(app)
pymysql.install_as_MySQLdb()

....

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

我们可以先把这些代码写到一个文件,参考上面代码加上必要的库名和run代码,然后CMD

python default.py shell
from default import db
db.create_all()

Mysql安装和操作(Flask)

数据库迁移

这里需要用到 flask-migrate
然后在刚才的py文件中增加配置

from flask.ext.migrate import Migrate,MigrateCommand
migrate=Migrate(app,db) #配置迁移
mamager.add_command("db",MigrateCommand) #配置迁移命令

然后CMD,利用下面的命令初始化迁移仓库,出现图片的目录就表示迁移成功了

python default.py db init

Mysql安装和操作(Flask)

表单和mysql

form = LoginForm()
    print(url_for("main.index"))
    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        print(User)
        user = User.query.filter_by(username=username, password=password).first()

第七行的代码就代表在数据库中查询用户名和密码
在整理模块之后需要在头部导入User模型,比如下面我的代码:

from ..models.User import User

参考链接:数据库的安装
配置MySQL及其相关操作