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

读取CSV库表信息,通过对应JSON配置连接数据库的代码参数问题

解决方案

步骤1:导入JSON模块并读取配置文件

需要添加json模块解析数据库配置文件,针对CSV中的每个数据库,动态读取对应的JSON配置文件。

步骤2:映射JSON配置到psycopg2连接参数

JSON配置的键名和psycopg2.connect所需参数名不完全匹配,需做对应映射:

  • serverName → host
  • databaseName → dbname
  • port → port(需转为整数,psycopg2要求port为int类型)
  • userID → user
  • password → password

修正后的完整代码

import psycopg2
from psycopg2 import sql
import csv
import json

with open('file.csv') as csv_file:
    r = csv.DictReader(csv_file)
    for row in r:
        db_name = row['database']
        table_name = row['tablename']
        print(db_name, table_name)
        
        # 读取对应数据库的JSON配置文件
        config_path = f"{db_name}.json"
        with open(config_path, 'r') as config_file:
            db_config = json.load(config_file)
        
        # 映射配置参数到psycopg2所需格式
        conn_params = {
            'dbname': db_config['databaseName'],
            'host': db_config['serverName'],
            'port': int(db_config['port']),
            'user': db_config['userID'],
            'password': db_config['password']
        }
        
        # 连接数据库并执行删除操作
        try:
            con = psycopg2.connect(**conn_params)
            cur = con.cursor()
            # 修正DELETE语句:SQL中DELETE不需要*
            cur.execute(sql.SQL("DELETE FROM {}").format(sql.Identifier(table_name)))
            con.commit()
            print(f"成功删除{db_name}.{table_name}的数据")
        except Exception as e:
            con.rollback()
            print(f"处理{db_name}.{table_name}时出错: {str(e)}")
        finally:
            # 确保关闭游标和连接
            if cur:
                cur.close()
            if con:
                con.close()

额外说明

  1. 多DBMS兼容:如果配置包含非PostgreSQL的数据库(如示例中的sybase),psycopg2无法连接,需更换对应驱动(如sybase用pysybase)并调整参数映射逻辑。
  2. 错误处理:通过try-except-finally块处理连接或执行错误,确保资源释放和事务的正确提交/回滚。
  3. SQL语法修正:原代码中delete * from是错误语法,正确写法为DELETE FROM table_name。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:30:58