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处理完数据后,往数据库写数据的时候也一样。注意注意!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python连接PostgreSQL数据库的方法

    前言 其实在Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2.psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用. 连接数据库: import psycopg2 conn = psycopg2.connect(host="10.100.157.168",user="postgres",password="postgres",database="

  • python连接PostgreSQL数据库的过程详解

    1. 常用模块 # 连接数据库 connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象 PG_CONF_123 = { 'user':'emma', 'port':123, 'host':'192.168.1.123', 'password':'emma', 'database':'dbname'} conn = psycopg2.connect(**PG_CONF_123) # 打开一个操作整个数据库的光标 连接对象可以创建光标用来执行SQL语句 cur = conn.cu

  • Python操作PostgreSql数据库的方法(基本的增删改查)

    Python操作PostgreSql数据库(基本的增删改查) 操作数据库最快的方式当然是直接用使用SQL语言直接对数据库进行操作,但是偶尔我们也会碰到在代码中操作数据库的情况,我们可能用ORM类的库对数控库进行操作,但是当需要操作大量的数据时,ORM的数据显的太慢了.在python中,遇到这样的情况,我推荐使用psycopg2操作postgresql数据库 psycopg2 官方文档传送门: http://initd.org/psycopg/docs/index.html 简单的增删改查 连接

  • python 插入Null值数据到Postgresql的操作

    数据库中最好插入Null值. 在python中,暂时没找到通过sql语句的方式插入Null值. 推荐使用轮子的方法 def insert_sample_data(self, values): # added self since you are referencing it below with self.con.cursor() as cur: sql = "insert into sampletable values (%s, %s, %s)" # Use %s for param

  • 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' 补充:数据库中的空值

  • 小心陷阱!MySQL中处理Null时需注意两点

    MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是MySQL数据库的一种特性.如在普通的字段中(字符型的数据),空值就是表示空值.但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空.此时为出现什么情况呢(如下图)? 我先创建了一个表.在这个表中有两个字段:

  • MySQL中设置NULL和空白字符串的问题及解决

    目录 MySQL设置NULL和空白字符串问题 在MySQL中判断是否为NULL MySQL中空值(null)和空字符(‘‘) 长度和判空 ifnull 建议 MySQL设置NULL和空白字符串问题 今天在修改一个bug,发现了很多问题. 记录其中一个比较有意识的bug. 数据库使用的是MySQL 先不谈问题,我就是觉得同一个字段,有人存了设置为空白字符串,有人设置了NULL. 空值是不占用空间的,MySQL中的NULL其实是占用空间的. 还有啊,有时候你虽然插入了NULL,但在数据库中还是有值的

  • python3实现往mysql中插入datetime类型的数据

    昨天在这个上面找了好久的错,嘤嘤嘤~ 很多时候我们在爬取数据存储的时候都需要将当前时间作为一个依据,在python里面没有时间类型可以直接拿来就用的.我们只需要在存储之前将时间类型稍作修饰就行. datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 如: #插入产品信息 insert_good_sql = """ INSERT INTO T_GOOD(good_name, good_type, img_

  • Python操控mysql批量插入数据的实现方法

    在Python中,通过pymysql模块,编写简短的脚本,即方便快捷地控制MySQL数据库 一.连接数据库 使用的函数:pymysql.connect 语法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name') 参数说明:host:MySQL服务器地址                           user:用户名             

  • MySQL中关于null值的一个小问题

    今天在测试null值的时候,发现了一个小问题,记录在这里,不知道大家以前遇到过没. 事情发展是这样的,在过滤一个表中的数值的时候,需要把age=2的列给剔除掉,然后查看剩余的列信息,这个操作看起来比较简单,我用一个表模拟一下过程: CREATE TABLE `test` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `age` int(11) DEFAULT NULL,   `score` varchar(20) NOT NULL DEFAULT '',

  • 一文带你探究MySQL中的NULL

    目录 前言 1 MySQL 中的NULL 2 NULL占用的长度 3 对NULL值的比较 4 SQL对NULL值进行处理 5 值为NULL 对查询条件的影响 6 值为NULL对索引的影响 7 值为NULL对排序的影响 8 NULL和空值区别 总结 前言 不知道大家有没有遇到这样的问题,当我们在对MySQL数据库进行查询操作时,条件写的是status!=1,理论上会将所有不符合条件的查询出来,但奇怪的是结果为NULL的就查不出来,必须得拼接上条件or status IS NULL.本篇文章我们就一

  • Python向Excel中插入图片的简单实现方法

    本文实例讲述了Python向Excel中插入图片的简单实现方法.分享给大家供大家参考,具体如下: 使用Python向Excel文件中插入图片,这个功能之前学习xlwt的时候通过xlwt模块实现过.那时候是在公司做的尝试,印象中插入的图片最终缩小为了一个单元格,同时由于公司的加密系统如此实现了图片插入的Excel文件不能够再次打开. 这次试用XlsxWriter这个模块,推测这个模块应该是具有比xlwt强大的多的功能.代码实现如下: #!/usr/bin/python # -*- codding:

  • python在html中插入简单的代码并加上时间戳的方法

    建议用pycharm,使用比较方便,并且可以直接编辑html文件 import time locatime = time.strftime("%Y-%m-%d" ) report = file('report.html') line = [] for i in report.readlines(): line.append(i) report.close() line.insert(7,'<p>\n <a href="report %s .html"

  • Mysql中的NULL和Empty String

    最近新接触Mysql,昨天新建一个表用于存储表结构信息: create table tablist(TABLE_SCHEMA varchar(40),TABLE_NAME varchar(40),COLUMN_NAME varchar(40),COLUMN_TYPE varchar(40), IS_NULLABLE varchar(10),COLUMN_DEFAULT varchar(40),COLUMN_COMMENT varchar(1000),REMARK varchar(2000));

随机推荐