feat: add PostgreSQL database backend support
Add multi-database support allowing selection between SQL Server and PostgreSQL via database.active config. Changes include dialect-aware SQL generation, cross-database timestamp functions, PostgreSQL connection URL builder, and psycopg dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
7
tests/fixtures/test_config.yaml
vendored
7
tests/fixtures/test_config.yaml
vendored
@@ -1,5 +1,6 @@
|
||||
# 测试配置
|
||||
database:
|
||||
active: sql_server
|
||||
sql_server:
|
||||
host: localhost
|
||||
port: 1433
|
||||
@@ -8,3 +9,9 @@ database:
|
||||
password: test_pass
|
||||
driver: "{ODBC Driver 18 for SQL Server}"
|
||||
trust_server_certificate: yes
|
||||
postgresql:
|
||||
host: localhost
|
||||
port: 5432
|
||||
database: TestDB
|
||||
username: test_user
|
||||
password: test_pass
|
||||
|
||||
@@ -5,6 +5,7 @@ from config.settings import load_settings
|
||||
def test_load_settings_success():
|
||||
"""测试成功加载配置文件"""
|
||||
settings = load_settings("tests/fixtures/test_config.yaml")
|
||||
assert settings.database.active == "sql_server"
|
||||
assert settings.database.sql_server.port == 1433
|
||||
assert settings.database.sql_server.host == "localhost"
|
||||
assert settings.database.sql_server.database == "TestDB"
|
||||
@@ -23,3 +24,14 @@ def test_database_url_property():
|
||||
assert "mssql+pyodbc" in str(url)
|
||||
assert "test_user" in str(url)
|
||||
assert "TestDB" in str(url)
|
||||
|
||||
|
||||
def test_postgresql_database_url_property():
|
||||
"""测试 PostgreSQL database_url 属性生成"""
|
||||
settings = load_settings("tests/fixtures/test_config.yaml")
|
||||
settings.database.active = "postgresql"
|
||||
url = settings.database_url
|
||||
assert url.drivername == "postgresql+psycopg"
|
||||
assert url.host == "localhost"
|
||||
assert url.port == 5432
|
||||
assert url.database == "TestDB"
|
||||
|
||||
Reference in New Issue
Block a user