SQL中联表的运用

当出现要大量数据去查询时,不要一个个去SQL查询,应该要批量的去查询。

def batch_cavity_query(self, fuseids):

"""批量查询cavity信息"""

if not fuseids:

return {}

复制代码
# 创建临时表批量查询
try:
    # 创建临时表
    self.cursor.execute("CREATE TABLE #TempFuseIDs (fuseid VARCHAR(100))")
    # 批量插入数据
    self.cursor.executemany("INSERT INTO #TempFuseIDs VALUES (%s)", [(fid,) for fid in fuseids])

    query = """
    SELECT 
        DA.qrc_fuseid,
        C.Barcode AS QRcode,
        L.qrc_fuseid AS LensData_FuseID,
        C.Cavity
    FROM #TempFuseIDs temp
    LEFT JOIN A DA
        ON temp.fuseid = DA.qrc_fuseid
    LEFT JOIN B L
        ON DA.qrc_QRcode = L.qrc_QRcode
    LEFT JOIN C C
        ON L.qrc_fuseid = C.Barcode
    """
    self.cursor.execute(query)
    results = self.cursor.fetchall()

    # 构建映射字典
    cavity_map = {}
    for row in results:
        fuseid = row[0]
        cavity_map[fuseid] = (row[1], row[2], row[3])

    return cavity_map
finally:
    self.cursor.execute("DROP TABLE #TempFuseIDs")
python 复制代码
def batch_query_sn(self, fuseids):
    """批量查询SN相关信息"""
    if not fuseids:
        return {}
复制代码
try:
    # 创建临时表
    self.cursor.execute("CREATE TABLE #TempFuseIDs (fuseid VARCHAR(100))")
    self.cursor.executemany("INSERT INTO #TempFuseIDs VALUES (%s)", [(fid,) for fid in fuseids])

    query = """
    SELECT 
        temp.fuseid,
        eqp_name,
        station_code,
        TRY_CAST(testres_main_test_recordposition3_ut_z AS FLOAT) - 
        TRY_CAST(testres_main_test_recordposition2_ut_z AS FLOAT) AS offset,
        time
    FROM #TempFuseIDs temp
    LEFT JOIN D  AA
        ON AA.sensor_id = temp.fuseid
    """
    self.cursor.execute(query)
    results = self.cursor.fetchall()

    sn_map = {}
    for row in results:
        fuseid = row[0]
        sn_map[fuseid] = (row[1], row[2], float(row[3]) if row[3] else 0, row[4])

    return sn_map
finally:
    self.cursor.execute("DROP TABLE #TempFuseIDs")
复制代码
相关推荐
爱学习的阿磊13 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha13 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞14 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean14 小时前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql
m0_5500246314 小时前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
AC赳赳老秦14 小时前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
啦啦啦_999914 小时前
Redis-2-queryFormat()方法
数据库·redis·缓存
玄同76515 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码15 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean15 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer