前言
这个也是分两种情况的:
1、提示字段找不到,但是数据表里面有这个字段
2、提示字段找不到,但是找不到的字段是我要插入的数据,而不是我表里面的字段
我们分情况讨论解决。
一、提示找不到的字段是我要插入的数据
1、问题描述
sql语句如图:
报错如图:
很明显,属于第二种情况,这个一般发生在插入单条数据的情况,批量插入是不会发生这个问题的。
2、解决方法
varchar
类型的字段的占位符 %s
前后加转义的单引号 \'
,如图:
成功插入数据:
二、提示找不到字段,但是数据表中存在该字段
1、问题描述
这个问题呢,主要是因为你定义的字段名是大写的缘故,因为postgresql的sql语句会默认是按小写字母来执行的,我们可以验证一下,sql语句如下:
报错如下:
我们可以看到我们写的是 NAME
,但是执行的时候提示的是 name
找不到,这种情况一般又分为几种类型,我下面依次来说吧。
2、解决方法
(一)加双引号
我们可以给大写的字段名加一个双引号,这样就不会自动转成小写了。当然如果数据表名也有大写字母的话,数据表名也要加双引号,如图:
数据插入成功:
如果加双引号还是解决不了的话,请接着往下看。
(二)用jertbrain全家桶建表
jertbrain公司的全家桶几乎每个软件都自带了数据库连接和管理功能,我们用这个来建表的话,就能解决以上问题,我们这里以Pycharm为例。
首先连接数据库,点击右上角的 DataBase->加号->Data Source->PostgreSql,进入如下页面:
这里是本机,所以主机名直接是 localhost
,输入用户名和密码,输入要连接的数据库名称,点击 Test Connecting
,检验是否能正常连接,如图就是能正常连接:
点击 Apply,数据库连接成功:
右击tables,点击new,点击Table:
进入建表页面,按照自己的需求新建完字段之后,点击Execute
,建表成功。
我们在控制台看一下是否有字段快捷提示,如果有,说明建表成功(不仅要有快捷提示,而且按住enter
之后能选择才行),并且不会出现找不到字段的问题(前提是用双引号把大写字段名括起来),快捷提示如图:
能选择不爆红:
执行sql:
插入成功:
注意:这里顺便提一嘴,当你大写字段名加了双引号之后,还是提示字段找不到的话,可以先来Pycharm(或者IDEA等等)连接数据库,在控制台测试一下是否有字段快捷提示,如果没有的话,说明这个表建的有问题。如果是用Navicat或者其他软件建的话,建议先用jertbrain全家桶建一个表,能正常访问不报错之后,你在用navicat建表,你会发现,也不会报错了!嘻嘻!!
(三)字段名全改成小写
如果还是不行的话,把字段名改成全小写吧,这样的话肯定能解决问题的!!