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

如何通过Python Connector实现SQL空表时的数据导入?

实现条件式SQL数据导入(仅当目标表为空时执行)

当然可以通过Python Connector实现这个需求!核心思路就是先检查目标表是否为空,确认表中没有数据后再执行LOAD DATA导入操作。下面是具体的实现方案和修改后的代码:

步骤说明

  1. 保留你原有的表创建逻辑,确保表存在;
  2. 查询目标表的记录数,判断是否为空;
  3. 仅当记录数为0时,执行LOAD DATA导入文本文件数据。

修改后的完整代码

# 原有的建表逻辑不变
sql35 = 'CREATE TABLE if not exists %s (Datum varchar(50), Uhrzeit varchar(13), UpsACT_V varchar(6), UpsPRE_V varchar(6), IpsACT_A varchar(6), IpsPRE_A varchar(6))' % (tblname35)
myCursor.execute(sql35)
myConnection.commit()

# 检查目标表是否为空
count_query = "SELECT COUNT(*) FROM %s" % tblname35
myCursor.execute(count_query)
row_count = myCursor.fetchone()[0]

# 仅当表为空时执行导入
if row_count == 0:
    loadData35 = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s" % (completePath35, tblname35)
    myCursor.execute(loadData35)
    myConnection.commit()
    print("数据导入成功:目标表为空,已执行导入操作")
else:
    print("未执行导入:目标表中已有数据")

额外优化提示

  • 若担心字符串格式化带来的SQL注入风险,建议先对表名tblname35做合法性校验(比如确认是你预期的表名列表中的值),避免恶意输入;
  • 可以添加异常处理逻辑,捕获数据库操作可能出现的错误,让代码更健壮:
    try:
        # 所有数据库操作代码放在这里
        sql35 = 'CREATE TABLE if not exists %s (...)' % (tblname35)
        myCursor.execute(sql35)
        myConnection.commit()
    
        count_query = "SELECT COUNT(*) FROM %s" % tblname35
        myCursor.execute(count_query)
        row_count = myCursor.fetchone()[0]
    
        if row_count == 0:
            loadData35 = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s" % (completePath35, tblname35)
            myCursor.execute(loadData35)
            myConnection.commit()
            print("数据导入成功")
        else:
            print("目标表非空,跳过导入")
    except Exception as e:
        print(f"操作出错:{str(e)}")
        myConnection.rollback()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:10