我有一张表。这是创建声明。将NULL值插入到双数据类型MySQL Python
CREATE TABLE `runsettings` (
`runnumber` mediumint(9) NOT NULL,
`equipment` varchar(45) NOT NULL,
`wafer` varchar(45) NOT NULL,
`settingname` varchar(100) NOT NULL,
`float8value` double DEFAULT NULL,
`apcrunid` varchar(45) DEFAULT NULL,
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`intvalue` int(11) DEFAULT NULL,
`floatvalue` float DEFAULT NULL,
`Batch` varchar(45) DEFAULT NULL,
`IndexNum` smallint(6) DEFAULT '1',
`stringvalue` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1056989 DEFAULT CHARSET=latin1;
这是我的插入语句:
import mysql.connector
cnx = mysql.connector.connect(user='test',
password ='test',host='0.0.0.1',
database='test')
vallist = [(471285, u'CT19', 7, u'271042', u'Etch Time Min', None, None, None),
(471285, u'CT19', 7, u'00000', u'Etch Time Min', None, None, 'None')]
cursor = cnx.cursor()
# ss =
cursor.executemany("INSERT INTO runsettings (apcrunid,equipment,runnumber,wafer,settingname,intvalue,floatvalue,float8value) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",vallist)
cnx.commit()
所以我尝试插入这些值。
vallist = [471285, u'CT19', 7, u'271042', u'Etch Time Min', None, None, None,
471285, u'CT19', 7, u'00000', u'Etch Time Min', None, None, 'None']
这是插入。 结果在DB 但是,当列表值是这个(区别是字符串'None'
第一获取评估):
vallist = [471285, u'CT19', 7, u'271042', u'Etch Time Min', None, None, 'None',
471285, u'CT19', 7, u'271042', u'Etch Time Min', None, None, None]
它给出了截断误差。
Data truncated for column 'float8value' at row 2
为什么当包含None
行是第一个列表中它并没有给出来的一样截断误差第一个列表上?
我很确定这是我正在执行的查询。它也奇怪,0值插入该列。 – essramos
实际上任何一种方法(准备与否)都会给我在数据库上的相同结果,所以让我们使用最新的(未准备好的)。 – essramos