From 813171deba731bee4bae707af4b156ddd513729e Mon Sep 17 00:00:00 2001 From: huangjinysf Date: Thu, 4 Sep 2025 20:56:37 +0800 Subject: [PATCH] 1st publish --- .gitignore | 9 ++ Dockerfile | 20 ++++ app/__init__.py | 0 app/app.py | 24 +++++ app/db_test.py | 98 +++++++++++++++++++ config/__init__.py | 0 config/database.py | 20 ++++ config/settings.py | 7 ++ docker-compose.yml | 16 +++ entity/wms_ingredients_log.py | 42 ++++++++ monthly_weight_plot.png | Bin 0 -> 46107 bytes plot_monthly_weight.py | 15 +++ repository/__init__.py | 0 repository/base_repository.py | 30 ++++++ repository/wms_ingredients_log_repository.py | 26 +++++ requirements.txt | Bin 0 -> 104 bytes service/__init__.py | 0 service/wms_ingredients_service.py | 14 +++ test.py | 6 ++ wms_ingredients_log_stats.py | 65 ++++++++++++ 20 files changed, 392 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 app/__init__.py create mode 100644 app/app.py create mode 100644 app/db_test.py create mode 100644 config/__init__.py create mode 100644 config/database.py create mode 100644 config/settings.py create mode 100644 docker-compose.yml create mode 100644 entity/wms_ingredients_log.py create mode 100644 monthly_weight_plot.png create mode 100644 plot_monthly_weight.py create mode 100644 repository/__init__.py create mode 100644 repository/base_repository.py create mode 100644 repository/wms_ingredients_log_repository.py create mode 100644 requirements.txt create mode 100644 service/__init__.py create mode 100644 service/wms_ingredients_service.py create mode 100644 test.py create mode 100644 wms_ingredients_log_stats.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed61e7a --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +**/__pycache__/ + +*.pyc + +*.log + +*.idea + +myenv/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7d09daf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3.11 + +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 +ENV LANGUAGE C.UTF-8 + +WORKDIR /app + +COPY requirements.txt . + +COPY ./app . + +# 如果有requirements.txt,取消下面的注释 + +# 使用 BuildKit 缓存挂载(避免重复下载 pip 包) +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + # pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + +CMD ["python", "db_test.py"] \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/app.py b/app/app.py new file mode 100644 index 0000000..ca7f9bd --- /dev/null +++ b/app/app.py @@ -0,0 +1,24 @@ +import logging +import time +import os + +# 确保日志目录存在 +log_dir = 'logs' +os.makedirs(log_dir, exist_ok=True) + +# 配置日志 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.FileHandler(f'{log_dir}/app.log'), + logging.StreamHandler() + ] +) + +logger = logging.getLogger(__name__) + +if __name__ == '__main__': + while True: + logger.info("Hello World from Docker Compose!") + time.sleep(5) \ No newline at end of file diff --git a/app/db_test.py b/app/db_test.py new file mode 100644 index 0000000..0875a93 --- /dev/null +++ b/app/db_test.py @@ -0,0 +1,98 @@ +from datetime import datetime +import logging +import time +import os +import sys +import locale +import mysql.connector +from mysql.connector import Error + +# 强制系统使用UTF-8 +sys.stdout.reconfigure(encoding='utf-8') +sys.stderr.reconfigure(encoding='utf-8') +locale.setlocale(locale.LC_ALL, 'C.UTF-8') + +if sys.platform != 'win32': + os.environ['TZ'] = 'Asia/Shanghai' + time.tzset() # 重新加载时区配置 + +# 确保日志目录存在 +log_dir = 'logs' +os.makedirs(log_dir, exist_ok=True) + +# 配置日志 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.FileHandler(f'{log_dir}/app.log', encoding='utf-8'), + logging.StreamHandler() + ] +) + +class CSTFormatter(logging.Formatter): + def formatTime(self, record, datefmt=None): + ct = datetime.fromtimestamp(record.created).astimezone() + if datefmt: + s = ct.strftime(datefmt) + else: + t = ct.strftime("%Y-%m-%d %H:%M:%S") + s = "%s,%03d" % (t, record.msecs) + return s + + +logger = logging.getLogger(__name__) + +def get_table_count(db_name): + try: + # 连接到MySQL数据库 + connection = mysql.connector.connect( + host='106.227.91.181', + user='root', # 替换为您的MySQL用户名 + password='cuixing@HuaerdaMySQL', # 替换为您的MySQL密码 + database='huaerdames_cloud' + # host= 'localhost', + # user='root', # 替换为您的MySQL用户名 + # password='root', # 替换为您的MySQL密码 + # database='huaerdames_cloud' + ) + + if connection.is_connected(): + cursor = connection.cursor() + + # 获取所有表名 + cursor.execute(f"SHOW TABLES FROM {db_name}") + tables = cursor.fetchall() + + # 统计每个表的记录数 + table_counts = {} + for table in tables: + table_name = table[0] + cursor.execute(f"SELECT COUNT(*) FROM {table_name}") + count = cursor.fetchone()[0] + table_counts[table_name] = count + + return table_counts + + except Error as e: + logger.error(f"数据库连接错误: {e}") + return None + finally: + if connection.is_connected(): + cursor.close() + connection.close() + +if __name__ == '__main__': + # 统计表数量 + db_name = 'huaerdames_cloud' + table_counts = get_table_count(db_name) + + if table_counts: + logger.info(f"数据库 '{db_name}' 表统计:") + for table, count in table_counts.items(): + logger.info(f"表名: {table}, 记录数: {count}") + logger.info(f"总表数: {len(table_counts)}") + else: + logger.warning("未能获取表统计信息") + + \ No newline at end of file diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config/database.py b/config/database.py new file mode 100644 index 0000000..615b0cd --- /dev/null +++ b/config/database.py @@ -0,0 +1,20 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from config.settings import DB_CONFIG +from urllib.parse import quote_plus + +DATABASE_URL = ( + f"mysql+pymysql://{DB_CONFIG['user']}:{quote_plus(DB_CONFIG['password'])}" + f"@{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}" +) + +engine = create_engine( + DATABASE_URL, + pool_size=5, # 默认 5,可根据并发调整 + max_overflow=20, # 超过 pool_size 后最大溢出连接数 + pool_timeout=30, # 等待连接的超时时间 + pool_recycle=1800, # 防止 MySQL server timeout + pool_pre_ping=True # 检查连接是否可用 +) + +SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False) diff --git a/config/settings.py b/config/settings.py new file mode 100644 index 0000000..c1f4532 --- /dev/null +++ b/config/settings.py @@ -0,0 +1,7 @@ +DB_CONFIG = { + "user": "root", + "password": "cuixing@HuaerdaMySQL", + "host": "106.227.91.181", + "port": 3306, + "database": "huaerdames_cloud" +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5eb5131 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.11' + +services: + python-logger: + build: + context: . + dockerfile: Dockerfile + # 启用 BuildKit 缓存 + args: + - BUILDKIT_INLINE_CACHE=1 # 允许缓存复用 + container_name: my-python-logger + volumes: + - ./logs:/app/logs + working_dir: /app + #restart: unless-stopped + restart: on-failure \ No newline at end of file diff --git a/entity/wms_ingredients_log.py b/entity/wms_ingredients_log.py new file mode 100644 index 0000000..86c68e7 --- /dev/null +++ b/entity/wms_ingredients_log.py @@ -0,0 +1,42 @@ +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import Column, BigInteger, String, DECIMAL, DateTime, Boolean + +Base = declarative_base() + +class WmsIngredientsLog(Base): + __tablename__ = 'wms_ingredients_log' + + id = Column(BigInteger, primary_key=True, autoincrement=True) + net_weight = Column(DECIMAL(24,2)) + is_deleted = Column(Boolean, default=False) + create_time = Column(DateTime) + # 其他字段省略... + code_sn = Column(String(50)) + ingredients_id = Column(BigInteger) + ingredients_name = Column(String(90)) + manufacturer_id = Column(BigInteger) + manufacturer_name = Column(String(90)) + part_number = Column(String(50)) + lot_number = Column(String(50)) + product_id = Column(BigInteger) + product_name = Column(String(90)) + item_specification = Column(String(90)) + item_id = Column(BigInteger) + net_weight = Column(DECIMAL(24,2)) + gross_weight = Column(DECIMAL(24,2)) + tare_weight = Column(DECIMAL(24,2), default=0.00) + measure_id = Column(BigInteger) + measure_name = Column(String(90)) + job_number = Column(String(90)) + status = Column(String(1)) + is_deleted = Column(Boolean, default=False) + version = Column(BigInteger, default=0) + create_by = Column(String(100)) + create_time = Column(DateTime) + update_by = Column(String(100)) + update_time = Column(DateTime) + attr1 = Column(String(255)) + attr2 = Column(BigInteger) + # attr3 JSON 可加 sqlalchemy.dialects.mysql.JSON + order_weight = Column(DECIMAL(24,2)) + is_documents = Column(String(1)) diff --git a/monthly_weight_plot.png b/monthly_weight_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..2968746737afe6d84b56e27e26b6b439799b7464 GIT binary patch literal 46107 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 ogYkw&;qzZE4*Wlg663}@hpo8}kt+