This commit is contained in:
sjk
2026-02-24 12:46:35 +08:00
parent be0c13e1a6
commit 85224e01e6
116 changed files with 8380 additions and 9642 deletions

View File

@@ -25,38 +25,9 @@ logger.add(
class ExcelImporter:
"""Excel数据导入器"""
def __init__(self, env: str = None):
"""
初始化导入器
Args:
env: 环境标识dev或prod默认使用当前配置
"""
# 如果指定了环境,临时设置环境变量
if env:
original_env = os.getenv('ENV')
if env == 'dev':
os.environ['ENV'] = 'development'
elif env == 'prod':
os.environ['ENV'] = 'production'
else:
raise ValueError(f"无效的环境标识: {env},必须是 dev 或 prod")
# 重新加载配置
import importlib
import config as config_module
importlib.reload(config_module)
from config import Config as ReloadedConfig
self.config = ReloadedConfig
# 恢复原始环境变量
if original_env:
os.environ['ENV'] = original_env
else:
os.environ.pop('ENV', None)
else:
self.config = Config
def __init__(self):
"""初始化导入器"""
self.config = Config
self.site_manager = SiteManager()
logger.info("=" * 70)
@@ -67,6 +38,8 @@ class ExcelImporter:
logger.info(f" - Database: {self.config.MYSQL_DATABASE}")
logger.info(f" - User: {self.config.MYSQL_USER}")
logger.info("=" * 70)
logger.info("提示: 通过设置环境变量 ENV=production 切换到生产环境")
logger.info("=" * 70)
def read_excel(self, file_path: str) -> pd.DataFrame:
"""
@@ -258,27 +231,25 @@ class ExcelImporter:
def main():
"""主函数"""
parser = argparse.ArgumentParser(
description='从Excel文件导入URL数据到数据库',
description='从Excel文件导入URL数据到数据库环境通过ENV环境变量控制',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
使用示例:
# 导入到开发环境
python import_excel_to_db.py -f "广告链接 1.26962条.xlsx" -e dev
# 导入到开发环境(默认)
python import_excel_to_db.py -f "广告链接 1.26962条.xlsx"
# 导入到生产环境
python import_excel_to_db.py -f "广告链接 1.26962条.xlsx" -e prod
# 导入到生产环境设置ENV环境变量
$env:ENV="production"; python import_excel_to_db.py -f "广告链接 1.26962条.xlsx"
# 指定查询词和维度
python import_excel_to_db.py -f "广告链接.xlsx" -e dev -q "关键词" -d "医疗"
python import_excel_to_db.py -f "广告链接.xlsx" -q "关键词" -d "医疗"
# 试运行模式(不实际插入)
python import_excel_to_db.py -f "广告链接.xlsx" -e dev --dry-run
python import_excel_to_db.py -f "广告链接.xlsx" --dry-run
"""
)
parser.add_argument('-f', '--file', required=True, help='Excel文件路径')
parser.add_argument('-e', '--env', choices=['dev', 'prod'], required=True,
help='目标环境: dev=开发环境, prod=生产环境')
parser.add_argument('-q', '--query-word', help='查询词默认None')
parser.add_argument('-d', '--dimension', help='站点维度默认None')
parser.add_argument('--frequency', type=int, default=1, help='频次默认1')
@@ -291,7 +262,7 @@ def main():
try:
# 创建导入器
importer = ExcelImporter(env=args.env)
importer = ExcelImporter()
# 读取Excel
df = importer.read_excel(args.file)
@@ -307,7 +278,7 @@ def main():
# 确认导入
if not args.dry_run:
logger.warning(f"\n即将导入 {len(df)} 条数据到【{args.env.upper()}】环境")
logger.warning(f"\n即将导入 {len(df)} 条数据到【{importer.config.ENV.upper()}】环境")
logger.warning(f"数据库: {importer.config.MYSQL_HOST}:{importer.config.MYSQL_PORT}/{importer.config.MYSQL_DATABASE}")
response = input("\n确认继续?[y/N]: ")