first commit
This commit is contained in:
36
db_utils.py
Normal file
36
db_utils.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# db_utils.py
|
||||
import pyodbc
|
||||
import config
|
||||
|
||||
def get_sql_conn():
|
||||
"""获取 SQL Server 连接"""
|
||||
c = config.SQL_SERVER_CONN
|
||||
# 显式添加 TrustServerCertificate=yes 以兼容 ODBC Driver 18+
|
||||
conn_str = (
|
||||
f"DRIVER={c['driver']};SERVER={c['server']};"
|
||||
f"DATABASE={c['database']};UID={c['uid']};PWD={c['pwd']};"
|
||||
"Encrypt=yes;TrustServerCertificate=yes;"
|
||||
)
|
||||
return pyodbc.connect(conn_str)
|
||||
|
||||
def get_access_conn(file_path):
|
||||
"""获取 Access 连接"""
|
||||
conn_str = f"DRIVER={config.ACCESS_DRIVER};DBQ={file_path};"
|
||||
return pyodbc.connect(conn_str)
|
||||
|
||||
def fmt_table(schema, table):
|
||||
"""格式化 SQL Server 表名 [schema].[table]"""
|
||||
return f"[{schema}].[{table}]"
|
||||
|
||||
def get_columns(cursor, table_name):
|
||||
"""获取 Access 表的列名"""
|
||||
# Access 查询表名加 []
|
||||
cursor.execute(f"SELECT TOP 1 * FROM [{table_name}]")
|
||||
return [column[0] for column in cursor.description]
|
||||
|
||||
def generate_insert_sql(target_schema, target_table, columns):
|
||||
"""生成带架构的 INSERT 语句"""
|
||||
full_table_name = fmt_table(target_schema, target_table)
|
||||
col_str = ",".join([f"[{col}]" for col in columns])
|
||||
placeholders = ",".join(["?"] * len(columns))
|
||||
return f"INSERT INTO {full_table_name} ({col_str}) VALUES ({placeholders})"
|
||||
Reference in New Issue
Block a user