You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.6 KiB

2 weeks ago
"""
pip install asyncpg
"""
import asyncpg
from Config.Config import *
# PostgreSQL 配置
POSTGRES_CONFIG = {
"host": POSTGRES_HOST,
"port": POSTGRES_PORT,
"user": POSTGRES_USER,
"password": POSTGRES_PASSWORD,
"database": POSTGRES_DATABASE,
1 week ago
"min_size": 1, # 设置为0表示不保留空闲连接
2 weeks ago
"max_size": 20,
"command_timeout": 60
}
# 初始化 PostgreSQL 连接池
async def init_postgres_pool():
2 weeks ago
return await asyncpg.create_pool(**POSTGRES_CONFIG)
# 查询示例
async def query_example(pool):
async with pool.acquire() as conn:
# 执行查询
rows = await conn.fetch('SELECT * FROM your_table LIMIT 10')
# 处理结果
for row in rows:
print(dict(row))
return rows
# 插入示例
async def insert_example(pool, data):
async with pool.acquire() as conn:
# 执行插入
stmt = """
INSERT INTO your_table (column1, column2)
VALUES ($1, $2)
"""
# 使用参数化查询防止SQL注入
inserted_id = await conn.fetchval(stmt, data['value1'], data['value2'])
print(f"插入成功!")
return inserted_id
# 使用示例
async def main():
pool = await init_postgres_pool()
# 查询示例
await query_example(pool)
# 插入示例
#data_to_insert = {'value1': 'test1', 'value2': 'test2'}
#await insert_example(pool, data_to_insert)
await pool.close()
if __name__ == '__main__':
import asyncio
asyncio.run(main())