当前位置:   article > 正文

使用python搭建接口,在服务器发布,提供给外网访问_python接口部署到服务器

python接口部署到服务器

使用python搭建接口,在服务器发布,提供给外网访问

前期准备

一台centos7的服务器,一台mysql数据库

搭建环境

linux服务器上安装python3.9,并安装需要用到的库
在 CentOS 7 上安装 Python 3.9 需要一些额外的步骤,因为 CentOS 7 的默认软件仓库中不包含 Python 3.9。以下是安装 Python 3.9 的步骤:

安装依赖项和编译工具:
首先,你需要安装一些依赖项和编译工具,以便从源代码编译 Python 3.9。运行以下命令安装这些依赖项:
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

访问 Python 的官方网站或使用 wget 命令从命令行下载 Python 3.9 的源代码。
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
使用 tar 命令解压下载的源代码文件:
tar -xvf Python-3.9.0.tgz

编译和安装 Python 3.9:
cd Python-3.9.0
./configure --enable-optimizations
sudo make altinstall
使用 altinstall 而不是 install 可以防止覆盖系统默认的 Python 版本。

验证安装:
python3.9 --version
这将显示 Python 3.9 的版本号。

配置软链接(可选):
如果你希望 python3 命令指向 Python 3.9 而不是系统默认的 Python 3 版本,你可以创建一个软链接。但请注意,这可能会影响到依赖于系统默认 Python 版本的其他软件。
sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python3
这个命令将创建一个从 /usr/bin/python3 到 /usr/local/bin/python3.9 的软链接。

请记住,从源代码编译软件可能会增加系统的复杂性和潜在的安全风险。在执行这些步骤之前,请确保你理解每个步骤的含义,并备份重要的数据和配置文件。

更新pip
/usr/bin/python3 -m pip install --upgrade pip
安装mysql库
python3 -m pip install mysql-connector-python
pip3 install PyMySQL

安装好python后,把python脚本上传到服务器上
cd /home/lighthouse/python/backend
rz
使用rz -y可以实现覆盖上传

脚本示例

from flask import Flask, request, jsonify
import pymysql
from pymysql.cursors import DictCursor
import logging

# 配置日志
logging.basicConfig(filename='app.log', level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')

app = Flask(__name__)

# 数据库配置
DB_HOST = 'xxx'
DB_PORT = xxx
DB_USER = 'xxx'
DB_PASSWORD = 'xxx'
DB_NAME = 'xxx'


# 数据库连接函数
def get_db_connection():
    return pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME,
                           cursorclass=DictCursor)


# 定义一个路由来处理GET请求
@app.route('/query', methods=['GET'])
def query_database():
    # 从请求中获取查询参数
    query_id = request.args.get('id', type=int)  # 假设id是整数类型,并设置默认值

    if query_id is None:
        logging.error('Missing id parameter in the request')
        return jsonify({'error': 'Missing id parameter'}), 400

    try:
        # 获取数据库连接
        with get_db_connection() as db:
            with db.cursor() as cursor:
                # 使用参数化查询来避免SQL注入
                logging.info(f'Executing query for id: {query_id}')
                cursor.execute("SELECT * FROM game_user WHERE id = %s", (query_id,))
                results = cursor.fetchall()

                # 将查询结果转换为JSON格式并返回
                logging.info(f'Query results for id {query_id}: {results}')
                return jsonify(results)
    except pymysql.MySQLError as e:
        # 处理数据库错误
        logging.error(f'Database error: {e}')
        return jsonify({'error': str(e)}), 500
    except Exception as e:
        # 处理其他异常
        logging.exception(f'An unexpected error occurred: {e}')
        return jsonify({'error': 'An unexpected error occurred'}), 500


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

MySQL上创建好库和表

插入数据,这里简单使用存储过程插入一万条数据

DELIMITER $$

CREATE PROCEDURE test_data_origin.insert_data()
BEGIN
    DECLARE i INT DEFAULT 0;
    DECLARE name_length INT;
    DECLARE random_name VARCHAR(50);
    DECLARE random_phone VARCHAR(11);

    SET name_length = 10;  -- 设置随机名称的长度

    WHILE i < 10000 DO  -- 循环插入一万条数据
        SET random_name = SUBSTRING(MD5(RAND()) FROM 1 FOR name_length);  -- 生成随机名称
        SET random_phone = LPAD(FLOOR(RAND() * 99999999999), 11, '0');  -- 生成随机电话号码
        
        INSERT INTO your_table_name (name, phone) VALUES (random_name, random_phone);  -- 向表中插入数据
        SET i = i + 1;
    END WHILE;
END$$

DELIMITER ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

运行了上面在运行这条,数据库就会插入一万条数据

CALL test_data_origin.insert_data();
  • 1

运行脚本,即可本地来请求服务器上的接口
python3 query_log.py

url:
http://ip:5000/query?id=xxx

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/439910
推荐阅读
相关标签
  

闽ICP备14008679号