python 在mysql中插入null空值的操作
python在mysql中插入null空值
sql = “insert into mrodata (mmeues1apid) values (%s)”%‘null'
%s没有引号,可以将“null"中null写进数据库,达到null值效果。
%s加引号 values就是字符串,导致类型错误,插入错误。
sql = “insert into mrodata (mmeues1apid) values (‘%s')”%‘null'
补充:数据库中的空值与null的区别以及python中的nan和none
数据库里面的”空值”有两种:空字符(“”)、空值(null)。
两种存储方式在数据库中都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。
那这两种到底有什么区别,下面通过例子直接来展示:
-- 创建表test create table `test` ( `id` int not null , `name` varchar(255) null , `date` timestamp null , `class` varchar(255) null ); insert into test (id,name,date,class) values (1,'张三','2017-03-01','a班'); insert into test (id,name,date,class) values (2,'李四','2017-03-02',''); insert into test (id,name,class) values (3,'王五','c班'); select * from test;
select count(date),count(class) from test;
看到这里应该明白了,直观看空字符和null的区别在于,在做count计算的时候,空字符也会被计算在里面,而null不会。有些同学在使用where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是null。
不然统计结果可能并不是你想要的。
平时有些数据是需要借助python 来处理的,我们来看看python获取数据的时候有哪些需要注意的。
python有两种方式获取数据:
1. 一种是把数据从mysql 中导出到txt或者csv,然后本地读取;
2. 另一种是python直接链接数据库,读取数据;
先看第一种:导出到csv,python 读取
第二种:
两种方式读取的数据居然不一样!
1、第一种把数据从mysql导出后,python读取时,空值即为null;
2、第二种链接数据库后,python能读取表结构,数据库的null对应列表中的none以及pandas中的nan(如果字段类型是时间,则为nat)。而数据库中的空字符,则被识别为空字符。
个人理解的等式
null(数据库)=none(python列表)=nan(pandas)
空字符(数据库)=空字符(python列表)=空字符(pandas)
从csv中获取数据时:空值(csv)=null(数据库)=nan(pandas)
转为csv数据时:数据库中的null\空字符和pandas中的nan\空字符,都变成csv中的空值
在python处理完数据后,往数据库写数据的时候也一样。注意注意!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
推荐阅读
-
MySQL中判断摸个字段的值是否为空NULL
-
python 插入Null值数据到Postgresql的操作
-
数据库MySql python读取插入数据,insert对那些类型加单引号,表单自己参考自己(外键),空值和NULL
-
python 在mysql中插入null空值的操作
-
mysql-时间为空值的设为0000-00-00怎么插入到数据库中
-
PHP传输到mysql中的值为空(不是null)?
-
在去mysql中插入记录时怎样获得这条记录的id值
-
在Python程序中操作MySQL的基本方法
-
详解使用pymysql在python中对mysql的增删改查操作(综合)
-
mysql中null值在表达式计算时的影响_MySQL