Linux安装python并访问数据库+部署到web

Linux安装python并访问数据库

  • 下载python3
  • 安装python
  • 访问mysql数据库
  • 部署到web
      • 安装Flask
      • 稍作修改all.py
      • 编写模板
        • 消除控制台的warning输出
  • 部署到nginx

下载python3

这里下载的是python3.8.1
其他版本可以去python官网

//利用wget下载
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

ps:下了20分钟,这下载也太慢了

后记:由于yum是用python2.7写的,安装的版本太高会导致无法解释python2.7语法。不过后面可以更改/usr/bin/yum把#!/usr/bin/python改为#!/usr/bin/python2,使其用更低的版本解释
yum用不了了?
解决:重新安装yum

安装python

安装依赖
yum install -y gcc patch libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

解压

#解压
tar -zxvf Python-3.8.1.tgz
mv Python-3.8.1 /usr/local 

编译

cd /usr/local/Python-3.8.1
#编译
./configure --prefix=/usr/local/python
make
make install

添加软链接

ln -s /usr/local/python/bin/python3.8 /usr/bin/python

添加环境变量

#好像也可以不用添加
echo "PATH=$PATH:$HOME/bin:/usr/local/python/bin" >>/etc/environment

查看python是否安装成功,如果有输出,就成功了

python -V

在这里插入图片描述

Python语言是一款对缩进非常敏感的语言,tab和空格的混用会导致错误。

访问mysql数据库

需要先安装mysql驱动

cd /usr/local/python/bin
./pip3 install pymysql

创建一个目录存放python文件

cd
mkdir ~/python/book
vim ~/python/book/all.py

内容如下

  1 import pymysql
  2 import sys
  3 #获得 mysql 查询的链接对象
  4 db = pymysql.connect('localhost', 'root', 'root', 'database')
  5 cur = db.cursor()
  6 #执行查询
  7 cur.execute("SELECT * FROM book")
  8 #获取数据
  9 rows = cur.fetchall()
 10 for row in rows:
 11         print ("%d %s %s %s %.2f" % (row[0], row[1],row[2],row[3],row[4]))
 12 db.close()

运行,发现可以输出,
在这里插入图片描述
接着稍作修改部署到web

部署到web

flask框架简述
flask框架学习
python flask访问数据库

安装Flask

/usr/local/python/bin/pip3.8 install flask

稍作修改all.py

import pymysql
import sys 
from flask import Flask
from flask import render_template
#创建Flask实例
app = Flask(__name__)
#路由,当用户访问/all.py时,跳转到all()函数处理
@app.route('/all.py')
def all():
        #获得 mysql 查询的链接对象
        db = pymysql.connect('localhost', 'root', 'root', 'database')
        cur = db.cursor()
        #执行语句不变
        cur.execute("SELECT * FROM book")
        #获取数据方法不变
        rows = cur.fetchall()
        db.close()
        #交给页面渲染
        return render_template('all.html',u=rows)
if __name__ == '__main__':
	#设置访问的ip和端口号
    app.run(host='0.0.0.0',port=9002)

这里使用模板对页面进行渲染
在all.py同级的目录下,建立文件夹templates(注意,只能是这个名字)

编写模板

mkdir templates
vim templates/all.html

all.html内容如下

#all.html
#{% %}这个是控制流语句
#{{}}由这个可以访问到传递到本页面的数据
{% block title %}这是用nginx+python实现的页面{% endblock %}
{% block page_content %}
    <table  border='1'>
    <tr>
        <th>书号</th>
        <th>书名</th>
        <th>作者</th>
        <th>出版社</th>
        <th>价格</th>
    </tr>
    {% for i in u %}
            <tr>
                <td>{{ i[0] }}</td>
                <td>{{ i[1] }}</td>
                <td>{{ i[2] }}</td>
                <td>{{ i[3] }}</td>
                <td>{{ i[4] }}</td>
            </tr>
    {% endfor %}
    </table>

{% endblock %}

控制台如下输出
Linux安装python并访问数据库+部署到web_第1张图片
浏览器如下输出
Linux安装python并访问数据库+部署到web_第2张图片

消除控制台的warning输出

WSGI的Waitess服务器

消除:WARNING: This is a development server. Do not use it in a production deployment.
安装waitress

#安装waitress
/usr/local/python/bin/pip3.8 install waitress

对all.py的代码再做如下修改

if __name__ == '__main__':
	from waitress import serve
	#app.run(host='0.0.0.0',port=9002)
	serve(app, host="0.0.0.0", port=9002)

让程序再后台运行,即可

python3 all.py&

部署到nginx

利用nginx的反向代理,用户访问nginx端口时,把请求交给python处理

修改nginx配置文件nginx.conf
vim /usr/loacl/nginx/conf/nginx.conf

添加如下代码

location ~\.py$ {
	proxy_set_header X-Forwarded-For $remote_addr;
	proxy_set_header Host            $http_host;
	proxy_pass   http://127.0.0.1:9002;
}  

注:需要先启动python程序监听9002端口

你可能感兴趣的:(linux实验)