Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)

前言

这个也是分两种情况的:

1、提示字段找不到,但是数据表里面有这个字段
2、提示字段找不到,但是找不到的字段是我要插入的数据,而不是我表里面的字段

我们分情况讨论解决。

一、提示找不到的字段是我要插入的数据

1、问题描述

sql语句如图:
在这里插入图片描述

报错如图:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第1张图片

很明显,属于第二种情况,这个一般发生在插入单条数据的情况,批量插入是不会发生这个问题的。

2、解决方法

varchar 类型的字段的占位符 %s 前后加转义的单引号 \',如图:
在这里插入图片描述

成功插入数据:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第2张图片

二、提示找不到字段,但是数据表中存在该字段

1、问题描述

  这个问题呢,主要是因为你定义的字段名是大写的缘故,因为postgresql的sql语句会默认是按小写字母来执行的,我们可以验证一下,sql语句如下:
在这里插入图片描述

报错如下:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第3张图片

  我们可以看到我们写的是 NAME ,但是执行的时候提示的是 name 找不到,这种情况一般又分为几种类型,我下面依次来说吧。

2、解决方法

(一)加双引号

  我们可以给大写的字段名加一个双引号,这样就不会自动转成小写了。当然如果数据表名也有大写字母的话,数据表名也要加双引号,如图:
在这里插入图片描述

数据插入成功:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第4张图片

如果加双引号还是解决不了的话,请接着往下看。

(二)用jertbrain全家桶建表

  jertbrain公司的全家桶几乎每个软件都自带了数据库连接和管理功能,我们用这个来建表的话,就能解决以上问题,我们这里以Pycharm为例。

首先连接数据库,点击右上角的 DataBase->加号->Data Source->PostgreSql,进入如下页面:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第5张图片

  这里是本机,所以主机名直接是 localhost,输入用户名和密码,输入要连接的数据库名称,点击 Test Connecting ,检验是否能正常连接,如图就是能正常连接:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第6张图片

点击 Apply,数据库连接成功:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第7张图片

右击tables,点击new,点击Table:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第8张图片

  进入建表页面,按照自己的需求新建完字段之后,点击Execute,建表成功。

  我们在控制台看一下是否有字段快捷提示,如果有,说明建表成功(不仅要有快捷提示,而且按住enter之后能选择才行),并且不会出现找不到字段的问题(前提是用双引号把大写字段名括起来),快捷提示如图:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第9张图片

能选择不爆红:
在这里插入图片描述

执行sql:
在这里插入图片描述

插入成功:
Postgresql报错字段找不到,明明数据表里面有这个字段(psycopg2.errors.UndefinedColumn: 错误: 字段 “kkkk“ 不存在 LINE 1: ...to pe)_第10张图片

  注意:这里顺便提一嘴,当你大写字段名加了双引号之后,还是提示字段找不到的话,可以先来Pycharm(或者IDEA等等)连接数据库,在控制台测试一下是否有字段快捷提示,如果没有的话,说明这个表建的有问题。如果是用Navicat或者其他软件建的话,建议先用jertbrain全家桶建一个表,能正常访问不报错之后,你在用navicat建表,你会发现,也不会报错了!嘻嘻!!

(三)字段名全改成小写

  如果还是不行的话,把字段名改成全小写吧,这样的话肯定能解决问题的!!

你可能感兴趣的:(Postgresql,Python,postgresql,数据库,sql,python)