Flask学习笔记(七)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Flask学习笔记(七)

  • 一、Flask 操作Mysql数据库(一)
    • 使用flask-mysqldb连接maysql服务器
    • 基本操作
      • 创建用户表和角色表
      • 执行脚本



提示:以下是本篇文章正文内容,下面案例可供参考

一、Flask 操作Mysql数据库(一)

1.创建数据库

create database <数据库名> charset=utf8;

2.显示所有数据库

show databases;

3.执行代码

mysql> create database flask_ex charset=utf8;
Query OK, 1 row affected (0.06 sec)

4.安装拓展

pip install -U Flask-SQLAlchemy
pip install flask-mysqldb

使用flask-mysqldb连接maysql服务器

建立数据库连接。数据库连接通过URL指定,而且程序使用的数据库必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI键中。
Django的数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 修改后端数据库使用mysql
        'NAME': 'mydb', # 设置数据库名称
        'USER': 'root', # 访问mysql用户名
        'PASSWORD': 'password', # 设置密码
        'HOST': 'localhost', # 设置ip地址
        'PORT':3333 , # 设置端口号
    }
}

Flask的数据库设置:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]:3333/flask_ex'

常用的SQLAlchemy字段类型:
Flask学习笔记(七)_第1张图片

基本操作

在flask-mysqldb里插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用commit()方法提交会话。

创建用户表和角色表

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()

app = Flask(__name__)

class Config(object):
    """配置参数"""
    user = 'root'
    password = '********'
    database = 'flask_ex'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://%s:%[email protected]:3333/%s' % (user,password,database)

    # 设置sqlalchemy自动更跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    # 查询时会显示原始SQL语句
    app.config['SQLALCHEMY_ECHO'] = True

    # 禁止自动提交数据处理
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = False

app.config.from_object(Config)

db = SQLAlchemy(app)

class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    name = db.Column(db.String(64), unique=True)
    users = db.relationship('User',backref='role')
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    name = db.Column(db.String(64), unique=True, index=True)
    email = db.Column(db.String(64),unique=True)
    pswd = db.Column(db.String(64))
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

if __name__ == '__main__':

    # 删除所有表
    db.drop_all()

    # 创建所有表
    db.create_all()

执行脚本

python3 15_SQLAlchemy.py

在mysql中可查询创建的表

+--------------------+
| Tables_in_flask_ex |
+--------------------+
| roles              |
| users              |
+--------------------+

user中:

+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(64) | YES  | UNI | NULL    |                |
| email   | varchar(64) | YES  | UNI | NULL    |                |
| pswd    | varchar(64) | YES  |     | NULL    |                |
| role_id | int(11)     | YES  | MUL | NULL    |                |
+---------+-------------+------+-----+---------+----------------+

role中:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(64) | YES  | UNI | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

你可能感兴趣的:(flask,学习,python)