You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连接SQL Server:基于无前缀LOAN_ID列表查询表行

解决Python查询SQL Server匹配批量贷款ID的问题

方法1:固定前缀长度下直接提取后缀匹配

因为LOAN_ID格式是四位数字_实际贷款ID,前缀(四位数字+下划线)长度固定为5位,直接用SUBSTRING提取后缀,效率最高。Python端把目标ID列表转成参数化查询的占位符,避免SQL注入。

示例代码:

import pyodbc

# 你的无前缀贷款ID列表
target_ids = ["LX3333", "LX4444", ...]  # 约1000条

# 建立数据库连接
conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    'SERVER=你的服务器地址;'
    'DATABASE=你的数据库名;'
    'UID=用户名;'
    'PWD=密码'
)
cursor = conn.cursor()

# 生成对应数量的参数占位符
placeholders = ','.join(['?'] * len(target_ids))
# 编写查询语句,提取LOAN_ID第6位及以后的部分做匹配
query = f"""
SELECT deal_name, LOAN_ID
FROM 你的表名
WHERE SUBSTRING(LOAN_ID, 6, LEN(LOAN_ID)) IN ({placeholders})
"""

# 执行参数化查询
cursor.execute(query, target_ids)
results = cursor.fetchall()

# 处理查询结果
for row in results:
    print(row.deal_name, row.LOAN_ID)

# 关闭连接
cursor.close()
conn.close()

方法2:前缀长度不固定时用字符定位提取后缀

如果前缀的数字位数可能有变动,用CHARINDEX定位下划线位置,再提取后面的部分:

修改查询语句即可:

WHERE RIGHT(LOAN_ID, LEN(LOAN_ID) - CHARINDEX('_', LOAN_ID)) IN ({placeholders})

其余Python代码和方法1一致。

方法3:批量插入临时表再关联查询(适合超大量ID)

如果后续ID数量超过SQL Server的参数限制(默认2100个),可以先把目标ID插入临时表,再用JOIN关联查询:

示例代码:

import pyodbc

target_ids = ["LX3333", "LX4444", ...]
conn = pyodbc.connect(你的连接字符串)
cursor = conn.cursor()

# 创建临时表
cursor.execute("CREATE TABLE #TempLoanIDs (LoanID VARCHAR(50))")
# 批量插入目标ID
cursor.executemany("INSERT INTO #TempLoanIDs (LoanID) VALUES (?)", [(id,) for id in target_ids])

# 关联查询
query = """
SELECT t.deal_name, t.LOAN_ID
FROM 你的表名 t
JOIN #TempLoanIDs tmp ON RIGHT(t.LOAN_ID, LEN(t.LOAN_ID) - CHARINDEX('_', t.LOAN_ID)) = tmp.LoanID
"""
cursor.execute(query)
results = cursor.fetchall()

# 清理临时表并关闭连接
cursor.execute("DROP TABLE #TempLoanIDs")
cursor.close()
conn.close()

注意事项

  • 如果贷款ID包含单引号,参数化查询会自动处理转义,比直接拼接字符串更安全
  • 频繁查询时,可给LOAN_ID的后缀部分创建计算列并添加索引,大幅提升查询速度
  • 1000条ID的IN查询完全符合SQL Server的参数限制,无需担心报错

内容的提问来源于stack exchange,提问作者themellion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:30:49