# pgtool **Repository Path**: manjim/pgtool ## Basic Information - **Project Name**: pgtool - **Description**: pgsql数据工具 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pgtool #### 介绍 pgsql数据工具 将数据写入pgsql数据库 #### 软件架构 软件架构说明 #### 安装教程 ```python pip install pgtool # 从gitee安装 pip install git+ssh://git@gitee.com/manjim/pgtool.git ``` 异步库使用的包 asyncpg pandas openpyxl #### 使用说明 write_topgsql_async 和 _get_asyncpg_connection 配合 功能和 write_topgsql_async2 功能一样, write_topgsql_async2 和 write_topgsql_async 一样,只是增加了一个连接适配功能,支持Connection, AsyncSession ##### 1. 创建数据库连接 - 使用连接池 ```python # 使用连接池 from pgtool import create_pgpool_async pool = await create_pgpool_async('postgresql://user11:password@127.0.0.1:16999/web_data') await pool.close() # ✅ 安全关闭所有连接 ``` - 直接创建链接 ```python # 或者直接创建链接 import asyncpg conn_params = { 'host': '192.168.110.207', 'port': 16999, 'database': 'web_data', 'user': 'user11', 'password': 'password' } conn = await asyncpg.connect(**conn_params) # 使用完后关闭 await conn.close() ``` ##### 2. 使用示例 ```python import time import asyncio import asyncpg import pandas as pd import logging from pgtool import write_topgsql_async,create_pgpool_async logger = logging.getLogger("pgtool") async def main(): # df = pd.DataFrame({'id': [1, 2], 'name': ['Alice', 'Bob']}) df = pd.read_excel(r"C:\Users\manji\Downloads\莎露斯宝贝报表.xlsx") logger.info(f"数据集大小:{len(df)}行,取10条写入数据库") pool = await create_pgpool_async('postgresql://user11:password@127.0.0.1:16999/web_data') # 测试写入数据 async with pool.acquire() as conn: result = await write_topgsql_async( df=df.head(10), schema='public', table='test01', conn=conn, create=True, add_columns= True, # update=True, write = 'auto', ) print(result,"**"*7) # 测试一个查询 async with pool.acquire() as conn: rows = await conn.fetch("SELECT 1 ") print(rows) await pool.close() # ✅ 安全关闭所有连接 asyncio.run(main()) ``` ```python import time import asyncio import asyncpg import pandas as pd import logging from pgtool import write_topgsql_async,create_pgpool_async logger = logging.getLogger("pgtool") async def main(): # df = pd.DataFrame({'id': [1, 2], 'name': ['Alice', 'Bob']}) df = pd.read_excel(r"C:\Users\manji\Downloads\莎露斯宝贝报表.xlsx") logger.info(f"数据集大小:{len(df)}行,取10条写入数据库") conn_params = { 'host': '127.0.0.1', 'port': 16999, 'database': 'web_data', 'user': 'user11', 'password': 'password' } conn = await asyncpg.connect(**conn_params) # 测试写入数据 result = await write_topgsql_async( df=df.head(10), schema='public', table='test01', conn=conn, create=True, add_columns= True, # update=True, write = 'auto', ) print(result,"**"*7) # 测试一个查询 rows = await conn.fetch("SELECT 1 ") print(rows) await conn.close() # ✅ 安全关闭所有连接 asyncio.run(main()) ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)