项目部署后初始化基础数据:处理PDF文件上传与MySQL数据库记录

在项目开发流程中,项目部署后的基础数据初始化是一个至关重要的步骤,尤其是对于那些需要处理文件上传和存储的应用来说。本文将详细介绍如何在项目部署后,将打包好的PDF文件上传到服务器,并使用Python脚本构造文件上传路径,然后将文件路径、文件名、上传人、上传日期等信息填充到MySQL数据库的文件表中。

1. 准备工作

1.1 服务器环境配置

确保你的服务器已经安装了必要的软件,包括Web服务器(如Nginx或Apache)、Python环境(推荐Python 3.x版本)以及MySQL数据库服务器。同时,确保Python的MySQL连接库(如pymysqlmysql-connector-python)已经安装。

1.2 文件存储目录

在服务器上创建一个目录用于存储上传的PDF文件,并确保Web应用对该目录有读写权限。

1.3 MySQL数据库准备

在MySQL数据库中创建一个表,用于存储文件的相关信息。以下是一个简单的示例表结构:

CREATE TABLE `files` (  
  `id` INT AUTO_INCREMENT PRIMARY KEY,  
  `filename` VARCHAR(255) NOT NULL,  
  `filepath` VARCHAR(500) NOT NULL,  
  `uploader` VARCHAR(100) NOT NULL,  
  `upload_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,  
  UNIQUE KEY `unique_file` (`filename`, `filepath`)  
);

2. 上传PDF文件到服务器

你可以使用FTP、SFTP或SCP等协议将打包好的PDF文件上传到服务器的指定目录。如果你使用的是自动化部署工具(如Jenkins、GitLab CI/CD),你也可以在部署流程中集成文件上传步骤。

3. Python脚本处理

编写一个Python脚本来处理文件上传路径的构造和数据库记录的插入。

3.1 安装MySQL连接库

如果你还没有安装MySQL连接库,可以使用pip来安装。以下示例使用pymysql

bash复制代码

pip install pymysql

3.2 编写Python脚本

import os  
import pymysql  
from datetime import datetime  
  
# MySQL连接配置  
config = {  
    'host': 'your_host',  
    'user': 'your_user',  
    'password': 'your_password',  
    'db': 'your_db',  
    'charset': 'utf8mb4',  
    'cursorclass': pymysql.cursors.DictCursor  
}  
  
# 文件存储目录  
storage_dir = '/path/to/your/storage/directory'  
  
# 假设上传人为"admin"  
uploader = 'admin'  
  
# 连接到MySQL数据库  
connection = pymysql.connect(**config)  
try:  
    with connection.cursor() as cursor:  
        # 遍历目录中的文件  
        for filename in os.listdir(storage_dir):  
            if filename.endswith('.pdf'):  
                file_path = os.path.join(storage_dir, filename)  
                # 构造完整的文件路径  
                full_file_path = 'http://your-server.com/path/to/files/' + filename  # 注意:这里需要根据实际情况调整  
                  
                # 插入数据到数据库  
                sql = "INSERT INTO files (filename, filepath, uploader, upload_date) VALUES (%s, %s, %s, %s)"  
                upload_date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')  
                cursor.execute(sql, (filename, full_file_path, uploader, upload_date))  
          
        # 提交事务  
        connection.commit()  
  
finally:  
    connection.close()  
  
print("数据库记录插入完成。")

注意

  • 请将your_hostyour_useryour_passwordyour_db替换为你的MySQL数据库的实际连接信息。
  • full_file_path是文件的访问URL,你需要根据实际情况来构造它。如果文件存储在服务器的Web根目录下,那么这个URL可能就是文件相对于根目录的路径;如果文件存储在非公开目录,你可能需要通过Web应用来提供文件访问服务。
  • 脚本中的os.listdir(storage_dir)会列出指定目录下的所有文件和子目录,你可能需要添加额外的逻辑来过滤出只有PDF文件。

4. 验证与测试

  • 登录到MySQL数据库,检查files表是否已正确填充了文件信息。
  • 通过Web应用或直接在浏览器中尝试访问这些文件的URL,确保文件可以正确访问。

通过以上步骤,你可以在项目部署后有效地初始化基础数据,包括将PDF文件上传到服务器并在MySQL数据库中记录文件的相关信息。

5.效果

以抓取本地目录下的所有jpg文件到mysql的test表为例:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值