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

PostgreSQL列名含(字符时,如何用Python实现数据插入?

解决PostgreSQL列名含特殊字符的INSERT报错问题

在PostgreSQL中,当列名包含括号、斜杠这类特殊字符时,直接在SQL语句中使用会触发语法错误——数据库会把这些特殊字符当作SQL语法的一部分解析,而非列名的组成部分。解决方法很简单:用英文双引号把包含特殊字符的列名包裹起来,明确告诉数据库这是完整的列名。

修改后的代码

sql = 'INSERT INTO elevator_2 (소재지1, 소재지2, "운행유효기간(시작일)", "운행유효기간(종료일)", 지역번호, 건물관리번호1, 건물관리번호2, 건물명, 건물용도명, 지상운행층수, 지하운행층수, 승강기번호, 승강기호기, 승강기구분명, 승강기형식명, 승강기종류명, 승강기관리번호1, 승강기관리번호2, 모델명, 승강기재개일, 승강기상태, 최초설치일자, 최종검시기관, 설치일자, 설치장소, 최종검사일, 최종검사종류, 최종검사결과, 적재하중, 제조업체명, 제조업체전화번호, 제조업체코드, 보수업체코드, 보수업체명, 보수업체연락처, 기계실여부, 관리주체명, 관리주체연락처, 휴폐지일자, 휴폐지사유, 최대정원, 정격속도, 승강기운행층수, "선임여부/운행관리자명", 운행관리자연락처, 승강기운행구간, "시/군/구코드", 표준키번호, "하도급/공동수급", 우편번호1, 우편번호2, 페이지번호) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
cur.execute(sql, (item['address1'], item['address2'], item['applcBeDt'], item['applcEnDt'], item['areaNo'], item['buldMgtNo1'], item['buldMgtNo2'], item['buldNm'], item['buldPrpos'], item['divGroundFloorCnt'], item['divUndgrndFloorCnt'], item['elevatorNo'], item['elvtrAsignNo'], item['elvtrDivNm'], item['elvtrFormNm'], item['elvtrKindNm'], item['elvtrMgtNo1'], item['elvtrMgtNo2'], item['elvtrModel'], item['elvtrResmptDe'], item['elvtrStts'], item['frstInstallationDe'], item['inspctInstt'], item['installationDe'], item['installationPlace'], item['lastInspctDe'], item['lastInspctKind'], item['lastResultNm'], item['liveLoad'], item['manufacturerName'], item['manufacturerTelno'], item['mnfcturCpnyCd'], item['mntCpnyCd'], item['mntCpnyNm'], item['mntCpnyTelno'], item['mrYn'], item['partcpntNm'], item['partcpntTelno'], item['pauseAblDe'], item['pauseAbleResn'], item['ratedCap'], item['ratedSpeed'], item['shuttleFloorCnt'], item['shuttleMngrNm'], item['shuttleMngrTelno'], item['shuttleSection'], item['sigunguCd'], item['standardKey'], item['subcntrCpny'], item['zipCd1'], item['zipCd2'], jsonDict['response']['body']['pageNo'] ))
conn.commit() 

注意事项

  • 必须使用英文双引号,中文双引号会被数据库识别为字符串内容,而非列名标识符。
  • 用双引号包裹列名后,PostgreSQL会严格区分列名的大小写,要确保和数据库表中定义的列名完全一致(包括大小写)。
  • 除了括号,包含斜杠、空格、特殊符号的列名,都需要用双引号包裹才能正常执行SQL语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:45:33