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

打印 上一主题 下一主题

主题 941|帖子 941|积分 2823

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用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可以实现覆盖上传
脚本示例
  1. from flask import Flask, request, jsonify
  2. import pymysql
  3. from pymysql.cursors import DictCursor
  4. import logging
  5. # 配置日志
  6. logging.basicConfig(filename='app.log', level=logging.INFO,
  7.                     format='%(asctime)s - %(levelname)s - %(message)s')
  8. app = Flask(__name__)
  9. # 数据库配置
  10. DB_HOST = 'xxx'
  11. DB_PORT = xxx
  12. DB_USER = 'xxx'
  13. DB_PASSWORD = 'xxx'
  14. DB_NAME = 'xxx'
  15. # 数据库连接函数
  16. def get_db_connection():
  17.     return pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME,
  18.                            cursorclass=DictCursor)
  19. # 定义一个路由来处理GET请求
  20. @app.route('/query', methods=['GET'])
  21. def query_database():
  22.     # 从请求中获取查询参数
  23.     query_id = request.args.get('id', type=int)  # 假设id是整数类型,并设置默认值
  24.     if query_id is None:
  25.         logging.error('Missing id parameter in the request')
  26.         return jsonify({'error': 'Missing id parameter'}), 400
  27.     try:
  28.         # 获取数据库连接
  29.         with get_db_connection() as db:
  30.             with db.cursor() as cursor:
  31.                 # 使用参数化查询来避免SQL注入
  32.                 logging.info(f'Executing query for id: {query_id}')
  33.                 cursor.execute("SELECT * FROM game_user WHERE id = %s", (query_id,))
  34.                 results = cursor.fetchall()
  35.                 # 将查询结果转换为JSON格式并返回
  36.                 logging.info(f'Query results for id {query_id}: {results}')
  37.                 return jsonify(results)
  38.     except pymysql.MySQLError as e:
  39.         # 处理数据库错误
  40.         logging.error(f'Database error: {e}')
  41.         return jsonify({'error': str(e)}), 500
  42.     except Exception as e:
  43.         # 处理其他异常
  44.         logging.exception(f'An unexpected error occurred: {e}')
  45.         return jsonify({'error': 'An unexpected error occurred'}), 500
  46. if __name__ == '__main__':
  47.     app.run(host='0.0.0.0', port=5000, debug=True)
复制代码
MySQL上创建好库和表
插入数据,这里简朴使用存储过程插入一万条数据
  1. DELIMITER $$
  2. CREATE PROCEDURE test_data_origin.insert_data()
  3. BEGIN
  4.     DECLARE i INT DEFAULT 0;
  5.     DECLARE name_length INT;
  6.     DECLARE random_name VARCHAR(50);
  7.     DECLARE random_phone VARCHAR(11);
  8.     SET name_length = 10;  -- 设置随机名称的长度
  9.     WHILE i < 10000 DO  -- 循环插入一万条数据
  10.         SET random_name = SUBSTRING(MD5(RAND()) FROM 1 FOR name_length);  -- 生成随机名称
  11.         SET random_phone = LPAD(FLOOR(RAND() * 99999999999), 11, '0');  -- 生成随机电话号码
  12.         
  13.         INSERT INTO your_table_name (name, phone) VALUES (random_name, random_phone);  -- 向表中插入数据
  14.         SET i = i + 1;
  15.     END WHILE;
  16. END$$
  17. DELIMITER ;
复制代码
运行了上面在运行这条,数据库就会插入一万条数据
  1. CALL test_data_origin.insert_data();
复制代码
运行脚本,即可本地来请求服务器上的接口
python3 query_log.py
url:
http://ip:5000/query?id=xxx

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表