又踏上了组内任务的征程
这里主要记录数据库在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
表单和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及其相关操作