commit
This commit is contained in:
@@ -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.26(962条).xlsx" -e dev
|
||||
# 导入到开发环境(默认)
|
||||
python import_excel_to_db.py -f "广告链接 1.26(962条).xlsx"
|
||||
|
||||
# 导入到生产环境
|
||||
python import_excel_to_db.py -f "广告链接 1.26(962条).xlsx" -e prod
|
||||
# 导入到生产环境(设置ENV环境变量)
|
||||
$env:ENV="production"; python import_excel_to_db.py -f "广告链接 1.26(962条).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]: ")
|
||||
|
||||
Reference in New Issue
Block a user