在做登录注册功能之前,我们先要在数据库中创建好用户表,终端进入mysql
在我这里,用户为root,密码为123456
mysql -u root -p //回车后输入密码
123456
成功进入mysql,使用命令行创建database
mysql> create database flask_chat charset utf8;
查看当前database指令
mysql> show databases;
或者安装Navicat Premium软件查看
建表
flask有一个库叫flask_sqlalchemy,可以通过ORM方式建表,十分方便,我们需要安装pymysql和flask-sqlalchemy两个库。
然后新建一个models.py来编写表,
为了避免头文件中的循环引用,我们还需要新建一个extdb.py文件来导入flask-sqlalchemy,让app.py和models.py分别导入extdb.py来解决问题。
extdb.py
#encoding: utf-8
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
models.py
#encoding: utf-8
from extdb import db
app.py
# encoding: utf-8
from flask import Flask
import config
from extdb import db
from models import *
import pymysql
app = Flask(__name__)
app.config.from_object(config)
pymysql.install_as_MySQLdb()
db.init_app(app)
开始设计用户表,在models.py中新建一个class:
# encoding: utf-8
from extdb import db
from datetime import datetime
# 用户
class User(db.Model):
__tablename__ = 'user' # 表名,不指定的话默认为小写处理后的类名
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# now()获取的是服务器第一次运行的时间
# now就是每次创建一个模型的时候,都获取当前的时间
create_time = db.Column(db.DateTime, default=datetime.now) # 创建时间
update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) # 更新时间
account = db.Column(db.String(20), nullable=False) # 账号
password = db.Column(db.String(20), nullable=False) # 密码
telephone = db.Column(db.String(11), nullable=True) # 手机号码
email = db.Column(db.String(50), nullable=True) # 邮箱
username = db.Column(db.String(20), nullable=True) # 用户名
intro = db.Column(db.Text, nullable=True) # 简介
head_img_url = db.Column(db.String(255), nullable=True) # 头像链接
sex = db.Column(db.Integer) # 性别
net_status = db.Column(db.Integer,default=0) # 网络状态
有些字段可能用不到,先加上以备不时之需
这样的方式可以不使用sql语句来创建表
我们还需要用到flask-script和flask-migrate库来实现在终端操作的目的,添加好库后,新建一个manage.py文件
manage.py
# encoding: utf-8
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app
from extdb import db
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
接下来要让项目与mysql进行绑定,在config.py文件中加上:
# 数据库
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_cchat'
USERNAME = 'root'
PASSWORD = '123456'
DB_URI = 'mysql+mysqldb://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
准备工作做完了,现在通过终端的方式创建用户表
终端cd到根目录
cd /...flask_chat
python3 manage.py db init
python3 manage.py db migrate
python3 manage.py db upgrade
在第一次新建数据库的时候要执行 db init 指令,以后数据库表的修改就只需要后面两条指令即可
查看一下数据库
mysql> show tables;
这样就完成了用户表的创建
网友评论