上一篇我们完成在服务器部署数据库的操作服务器通过docker部署mysql
。至此,可以在flask上与数据库结合。本次,使用flask_sqlalchemy与数据库进行连接。
在docker简单部署flask基础上修改。
1.创建setting.py(用于flask项目与数据库配置)
class test_config(object):
account = 'root' # 账号
password = 'xxxxx' # 填入密码
proname = 'xxxx' # 填入数据库名
ip = 'xxxxx' # 填入服务器网址
port = '3306' # 端口
SECRET_KEY = "hahahaha" # session密钥hhhhhhhh
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(account, password, ip, port, proname)
# print(SQLALCHEMY_DATABASE_URI)
SQLALCHEMY_TRACK_MODIFICATIONS = True
2.创建login.html(用于登陆)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<form action="/login" method="post">
用户名:<input type="text" name="name">
<br>
密码:<input type="password" name="pwd">
<br>
<input type="submit" value="登陆">
</form>
</body>
</html>
3.修改app.py文件
from flask import Flask, request, render_template, redirect
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('setting.test_config') #载入配置文件
db = SQLAlchemy(app)
from models import User #载入模型
@app.route('/', methods=['GET', 'POST'])
def index():
return redirect('/login')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
name = request.form.get('name')
pwd = request.form.get('pwd')
print(name, pwd)
user = User.query.filter(User.name == name, User.password == pwd).first()
if user:
return "欢迎登陆"
else:
return "登陆失败"
if __name__ == '__main__':
app.run()
4.创建models.py文件(实现类与数据库表的对应)
from app import db
#与数据库的表相对应
class User(db.Model):
__tablename__ = 'user'#数据库表名
name = db.Column(db.String(10), primary_key=True)
password = db.Column(db.String(45), nullable=False)
def get_name(self):
return self.name
def get_pwd(self):
return self.password
5.创建数据库对应表,插入数据
6.修改requirements.txt
flask
gunicorn
gevent
flask_sqlalchemy
pymysql
7.上传镜像在服务器部署,记得mysql的镜像也要运行
看看效果
完成