用Python导数据到mysql中遇到问题,小数后几位在导入数据库中直接被舍弃,无论怎么调整float的长度和小数的精度都不行。代码如下:import osimport pymysqlimport sysimport jsonimport numpy as npdb = pymysql.connect('localhost', 'root', '1995711zjz', 'airs_co2_month')cur = db.cursor()file_path = 'D:\\air\\air month(riqi)'try: dirs=os.listdir(file_path) info_list=[] for i in dirs: file_name=os.path.join(file_path,i) #print(file_name) with open(file_name,"r",encoding='utf-8') as f: next(f) for line in f.readlines(): if line: list = [] list = line.strip('\n').split(' ') while '' in list: list.remove('') new_list = [] for n in list: new_list.append(float(n)) list=new_list riqi=list[0] Latitude = list[1] Longitude = list[2] CO2_fraction = list[3] sdev = list[4] #CO2TotalColumn = list[5] sql = """insert into airs_co2_mon (riqi,Latitude,Longitude,CO2_fraction,sdev) values('%d','%f','%f','%f','%f')""" % (riqi, Latitude,Longitude,CO2_fraction,sdev) cur.execute(sql) db.commit()except Exception as e: print(e)finally: cur.close() db.close()sdev这个参数我打印出来都是3.90104e-06这种精度,插入到数据库就变成4e-06.图2是我的数据。CO2_sdev那里变成这样。求问大神应该怎么修改
无论是用double还是decimal导进去的数据都变成了0.00000500000000,0.00000300000000 这样的数字,很奇怪 只有这一组数据这样 其他的都是正常的
我在里面看到了insert into airs_co2_mon (riqi,Latitude,Longitude,CO2_fraction,sdev) values('%d','%f','%f','%f','%f')类似语句,
可能是e-006次方太小了,所以%f并不能完全读出来吧,虽然说%f读的是原值,但是我记得好像在什么地方看过,如果小数点后面第五位没有值,那么这个数值就是一位的约数(记忆并不那么清晰,最好你自己用其他方式试试),前面的e-04则因为有值,所以就能好好的显现出来,后面这个则是太小,所以就不行了,个人觉得可是稍微改一下最后的%f试试。