zoukankan      html  css  js  c++  java
  • 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()
    

    效果

    数据库迁移

    这里需要用到 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
    

    migrations

    表单和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及其相关操作

  • 相关阅读:
    Android ImageView设置图片原理(下)
    C++ 虚函数表 多重继承
    C++ 虚函数表 单继承
    私有继承
    内联函数和宏定义的区别
    #pragma pack(x) CPU对齐
    static 变量(静态变量)
    C++ 中const作用
    如何连接宏参数
    几种常见容器比较和分析 hashmap, map, vector, list ...hash table
  • 原文地址:https://www.cnblogs.com/bay1/p/10982276.html
Copyright © 2011-2022 走看看