重构时序数据库连接逻辑,移除冗余代码
This commit is contained in:
@@ -116,3 +116,37 @@ def get_pg_config() -> dict:
|
|||||||
def get_pg_password() -> str:
|
def get_pg_password() -> str:
|
||||||
"""Return PostgreSQL password (use with care)."""
|
"""Return PostgreSQL password (use with care)."""
|
||||||
return settings.DB_PASSWORD
|
return settings.DB_PASSWORD
|
||||||
|
|
||||||
|
|
||||||
|
def get_timescaledb_pgconn_string(
|
||||||
|
db_name: Optional[str] = None,
|
||||||
|
db_host: Optional[str] = None,
|
||||||
|
db_port: Optional[str] = None,
|
||||||
|
db_user: Optional[str] = None,
|
||||||
|
db_password: Optional[str] = None,
|
||||||
|
) -> str:
|
||||||
|
"""Return TimescaleDB connection string in psycopg conninfo format."""
|
||||||
|
resolved_db_name = db_name or settings.TIMESCALEDB_DB_NAME
|
||||||
|
resolved_db_host = db_host or settings.TIMESCALEDB_DB_HOST
|
||||||
|
resolved_db_port = db_port or settings.TIMESCALEDB_DB_PORT
|
||||||
|
resolved_db_user = db_user or settings.TIMESCALEDB_DB_USER
|
||||||
|
resolved_db_password = db_password or settings.TIMESCALEDB_DB_PASSWORD
|
||||||
|
return (
|
||||||
|
f"dbname={resolved_db_name} host={resolved_db_host} port={resolved_db_port} "
|
||||||
|
f"user={resolved_db_user} password={resolved_db_password}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_timescaledb_pg_config() -> dict:
|
||||||
|
"""Return TimescaleDB configuration except password."""
|
||||||
|
return {
|
||||||
|
"name": settings.TIMESCALEDB_DB_NAME,
|
||||||
|
"host": settings.TIMESCALEDB_DB_HOST,
|
||||||
|
"port": settings.TIMESCALEDB_DB_PORT,
|
||||||
|
"user": settings.TIMESCALEDB_DB_USER,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_timescaledb_pg_password() -> str:
|
||||||
|
"""Return TimescaleDB password (use with care)."""
|
||||||
|
return settings.TIMESCALEDB_DB_PASSWORD
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
from .database import *
|
from .database import *
|
||||||
from .timescaledb_info import *
|
|
||||||
from .composite_queries import CompositeQueries
|
from .composite_queries import CompositeQueries
|
||||||
@@ -3,7 +3,7 @@ from contextlib import asynccontextmanager
|
|||||||
from typing import AsyncGenerator, Dict, Optional
|
from typing import AsyncGenerator, Dict, Optional
|
||||||
import psycopg_pool
|
import psycopg_pool
|
||||||
from psycopg.rows import dict_row
|
from psycopg.rows import dict_row
|
||||||
import app.infra.db.timescaledb.timescaledb_info as timescaledb_info
|
from app.core.config import get_timescaledb_pgconn_string
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -21,9 +21,9 @@ class Database:
|
|||||||
|
|
||||||
# Get connection string, handling default case where target_db_name might be None
|
# Get connection string, handling default case where target_db_name might be None
|
||||||
if target_db_name:
|
if target_db_name:
|
||||||
conn_string = timescaledb_info.get_pgconn_string(db_name=target_db_name)
|
conn_string = get_timescaledb_pgconn_string(db_name=target_db_name)
|
||||||
else:
|
else:
|
||||||
conn_string = timescaledb_info.get_pgconn_string()
|
conn_string = get_timescaledb_pgconn_string()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.pool = psycopg_pool.AsyncConnectionPool(
|
self.pool = psycopg_pool.AsyncConnectionPool(
|
||||||
@@ -54,8 +54,8 @@ class Database:
|
|||||||
"""Get the TimescaleDB connection string."""
|
"""Get the TimescaleDB connection string."""
|
||||||
target_db_name = db_name or self.db_name
|
target_db_name = db_name or self.db_name
|
||||||
if target_db_name:
|
if target_db_name:
|
||||||
return timescaledb_info.get_pgconn_string(db_name=target_db_name)
|
return get_timescaledb_pgconn_string(db_name=target_db_name)
|
||||||
return timescaledb_info.get_pgconn_string()
|
return get_timescaledb_pgconn_string()
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def get_connection(self) -> AsyncGenerator:
|
async def get_connection(self) -> AsyncGenerator:
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import psycopg
|
|||||||
from psycopg import sql
|
from psycopg import sql
|
||||||
from psycopg.rows import dict_row
|
from psycopg.rows import dict_row
|
||||||
import time
|
import time
|
||||||
|
from app.core.config import get_timescaledb_pgconn_string
|
||||||
from app.infra.db.timescaledb.repositories.scheme import SchemeRepository
|
from app.infra.db.timescaledb.repositories.scheme import SchemeRepository
|
||||||
from app.infra.db.timescaledb.repositories.realtime import RealtimeRepository
|
from app.infra.db.timescaledb.repositories.realtime import RealtimeRepository
|
||||||
import app.infra.db.timescaledb.timescaledb_info as timescaledb_info
|
|
||||||
from app.infra.db.timescaledb.repositories.scada import ScadaRepository
|
from app.infra.db.timescaledb.repositories.scada import ScadaRepository
|
||||||
|
|
||||||
|
|
||||||
@@ -25,9 +25,9 @@ class InternalStorage:
|
|||||||
for attempt in range(max_retries):
|
for attempt in range(max_retries):
|
||||||
try:
|
try:
|
||||||
conn_string = (
|
conn_string = (
|
||||||
timescaledb_info.get_pgconn_string(db_name=db_name)
|
get_timescaledb_pgconn_string(db_name=db_name)
|
||||||
if db_name
|
if db_name
|
||||||
else timescaledb_info.get_pgconn_string()
|
else get_timescaledb_pgconn_string()
|
||||||
)
|
)
|
||||||
with psycopg.Connection.connect(conn_string) as conn:
|
with psycopg.Connection.connect(conn_string) as conn:
|
||||||
RealtimeRepository.store_realtime_simulation_result_sync(
|
RealtimeRepository.store_realtime_simulation_result_sync(
|
||||||
@@ -56,9 +56,9 @@ class InternalStorage:
|
|||||||
for attempt in range(max_retries):
|
for attempt in range(max_retries):
|
||||||
try:
|
try:
|
||||||
conn_string = (
|
conn_string = (
|
||||||
timescaledb_info.get_pgconn_string(db_name=db_name)
|
get_timescaledb_pgconn_string(db_name=db_name)
|
||||||
if db_name
|
if db_name
|
||||||
else timescaledb_info.get_pgconn_string()
|
else get_timescaledb_pgconn_string()
|
||||||
)
|
)
|
||||||
with psycopg.Connection.connect(conn_string) as conn:
|
with psycopg.Connection.connect(conn_string) as conn:
|
||||||
SchemeRepository.store_scheme_simulation_result_sync(
|
SchemeRepository.store_scheme_simulation_result_sync(
|
||||||
@@ -97,9 +97,9 @@ class InternalQueries:
|
|||||||
for attempt in range(max_retries):
|
for attempt in range(max_retries):
|
||||||
try:
|
try:
|
||||||
conn_string = (
|
conn_string = (
|
||||||
timescaledb_info.get_pgconn_string(db_name=db_name)
|
get_timescaledb_pgconn_string(db_name=db_name)
|
||||||
if db_name
|
if db_name
|
||||||
else timescaledb_info.get_pgconn_string()
|
else get_timescaledb_pgconn_string()
|
||||||
)
|
)
|
||||||
with psycopg.Connection.connect(conn_string) as conn:
|
with psycopg.Connection.connect(conn_string) as conn:
|
||||||
rows = ScadaRepository.get_scada_by_ids_time_range_sync(
|
rows = ScadaRepository.get_scada_by_ids_time_range_sync(
|
||||||
@@ -144,9 +144,9 @@ class InternalQueries:
|
|||||||
for attempt in range(max_retries):
|
for attempt in range(max_retries):
|
||||||
try:
|
try:
|
||||||
conn_string = (
|
conn_string = (
|
||||||
timescaledb_info.get_pgconn_string(db_name=db_name)
|
get_timescaledb_pgconn_string(db_name=db_name)
|
||||||
if db_name
|
if db_name
|
||||||
else timescaledb_info.get_pgconn_string()
|
else get_timescaledb_pgconn_string()
|
||||||
)
|
)
|
||||||
with psycopg.Connection.connect(conn_string) as conn:
|
with psycopg.Connection.connect(conn_string) as conn:
|
||||||
rows = ScadaRepository.get_scada_by_ids_time_range_sync(
|
rows = ScadaRepository.get_scada_by_ids_time_range_sync(
|
||||||
@@ -257,9 +257,9 @@ class InternalQueries:
|
|||||||
for attempt in range(max_retries):
|
for attempt in range(max_retries):
|
||||||
try:
|
try:
|
||||||
conn_string = (
|
conn_string = (
|
||||||
timescaledb_info.get_pgconn_string(db_name=db_name)
|
get_timescaledb_pgconn_string(db_name=db_name)
|
||||||
if db_name
|
if db_name
|
||||||
else timescaledb_info.get_pgconn_string()
|
else get_timescaledb_pgconn_string()
|
||||||
)
|
)
|
||||||
with psycopg.Connection.connect(conn_string) as conn:
|
with psycopg.Connection.connect(conn_string) as conn:
|
||||||
with conn.cursor(row_factory=dict_row) as cur:
|
with conn.cursor(row_factory=dict_row) as cur:
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
from dotenv import load_dotenv
|
|
||||||
import os
|
|
||||||
|
|
||||||
load_dotenv()
|
|
||||||
|
|
||||||
pg_name = os.getenv("TIMESCALEDB_DB_NAME")
|
|
||||||
pg_host = os.getenv("TIMESCALEDB_DB_HOST")
|
|
||||||
pg_port = os.getenv("TIMESCALEDB_DB_PORT")
|
|
||||||
pg_user = os.getenv("TIMESCALEDB_DB_USER")
|
|
||||||
pg_password = os.getenv("TIMESCALEDB_DB_PASSWORD")
|
|
||||||
|
|
||||||
|
|
||||||
def get_pgconn_string(
|
|
||||||
db_name=pg_name,
|
|
||||||
db_host=pg_host,
|
|
||||||
db_port=pg_port,
|
|
||||||
db_user=pg_user,
|
|
||||||
db_password=pg_password,
|
|
||||||
):
|
|
||||||
"""返回 PostgreSQL 连接字符串"""
|
|
||||||
return f"dbname={db_name} host={db_host} port={db_port} user={db_user} password={db_password}"
|
|
||||||
|
|
||||||
|
|
||||||
def get_pg_config():
|
|
||||||
"""返回 PostgreSQL 配置变量的字典"""
|
|
||||||
return {
|
|
||||||
"name": pg_name,
|
|
||||||
"host": pg_host,
|
|
||||||
"port": pg_port,
|
|
||||||
"user": pg_user,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def get_pg_password():
|
|
||||||
"""返回密码(谨慎使用)"""
|
|
||||||
return pg_password
|
|
||||||
Reference in New Issue
Block a user