在项目开发流程中,项目部署后的基础数据初始化是一个至关重要的步骤,尤其是对于那些需要处理文件上传和存储的应用来说。本文将详细介绍如何在项目部署后,将打包好的PDF文件上传到服务器,并使用Python脚本构造文件上传路径,然后将文件路径、文件名、上传人、上传日期等信息填充到MySQL数据库的文件表中。
1. 准备工作
1.1 服务器环境配置
确保你的服务器已经安装了必要的软件,包括Web服务器(如Nginx或Apache)、Python环境(推荐Python 3.x版本)以及MySQL数据库服务器。同时,确保Python的MySQL连接库(如pymysql
或mysql-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_host
、your_user
、your_password
、your_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表为例: