homework

2021最新ubuntu20.04LTS下mysql安装及flask访问

  1. 安装

    1. apt安装
    sudo apt-get update
    sudo apt-get install -y mysql
    
    1. dpkg安装
      访问mysql8的官网下载安装,根据安装指导进行即可。
    sudo dpkg -i mysql-apt-config*
    
  2. 设置数据库安全性,根据需求填写,注意对于mysql8来说只有2类密码(数字,大写字母,小写字母,下划线,大于8位)才能通过Python/java,以非sudo权限用户访问到数据库

sudo mysql_secure_installation
  1. 下载mysql官方可视化管理工具mysql-workbench(类似于sqlserver的ssms)
    访问mysql-workbench的官网,选择ubuntu-linux,选择ubuntu-linux 20.04,下载两个deb文件,其中带-dbgsym的文件的依赖是不带的,需要先安装mysql-workbench-community
sudo dpkg -i mysql-workbench-community_*

再安装mysql-workbench-community-dbgsym

sudo dpkg -i mysql-workbench-community-dbgsym*
  1. 如果出现Error 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password: YES),需要修改密码为2类密码(数字,大写字母,小写字母,下划线,大于8位)
sudo mysql
#下面进入mysql>
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '新密码'; 
mysql> exit;
#退出mysql后重启服务
sudo service mysql restart
  1. 执行你的sql语句
  2. 基于conda命令配置flask(由于pip安装可能会产生依赖冲突,推荐使用conda来规避。出于常规的前后端分离产品,推荐安装以下的依赖,其中name区域是自己的环境名称),conda切换清华源的操作可以参考清华源提供的使用说明
conda create -n name flask flask-login flask-sqlalchemy flask-wtf mysqlclient pymysql python=3.8
#或者在base环境或者需要使用的环境下执行
conda install -y flask flask-login flask-sqlalchemy flask-wtf mysqlclient pymysql
  1. 在项目目录下创建app.py文件,在项目目录下创建templates文件夹,里面放入html、css、js等文件,通过下面的代码即可实现在index.html文件插入超链接的结果,并放到服务器上(根据需要修改route和文件名即可,想要动态插入网页可以使用glob在index.html里传参)
from flask import Flask,render_template,send_from_directory
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.htm')
@app.route('/<path:filename>') 
def custom_static(filename): 
    return send_from_directory(directory='templates/',filename=filename) 
app.run()
  1. 在项目目录下的终端运行即可在本地搭建服务器
flask run
  1. 在templates文件夹下创建test.html文件,写入下面的内容,假设数据库只有三列,第一列是id无用信息。{}中的内容是jinja,和python2语法几乎一样
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <meta name="description" content="你的作品">
	<meta name="author" content="你的名字">
</head>
<body>
    {% for row in results %}
        {% for column in dct[i].items() %}
        <p style="text-align: left;">
            {{column[1]}}:{{column[2]}<br>
        </p>
        {% endfor %}
    {% endfor %}
</body>
</html>
  1. 在app.py文件的app.run()之前添加下面的内容,即可实现访问数据库并传参
@app.route('/test.html')
def sql():
    import mysql
    db = pymysql.connect(host="127.0.0.1", user="root",password="改成你的密码",database="改成你的数据库",charset="utf8")
    cursor = db.cursor()
    sql="你的数据库查询语句"
    cursor.execute(sql)
    results = cursor.fetchall()
    db.close()
    return render_template('test.html',results=results)
上一篇:【mysql】远程连接的一些操作


下一篇:JAVA设计模式第二讲:创建型设计模式