mysql插入数据:如果存在就更新,如果不存在就插入 ON DUPLICATE KEY UPDATE

def getCURVEDATA(Curvedata, Curve):
	db = connect()
	cursor = db.cursor()
	submitTime = datetime.datetime.now()

	for key, vals in Curve.items():
		
		allsql = "insert into allcurve1 (CurveName, `Time`,Creater,CurveType,G1,G2,S1,S2,OLC) VALUES ('%s','%s','%s','%s',%s,%s,%s,%s,%s)" \
		         % (key, submitTime, vals[0], vals[1], vals[2], vals[3], vals[4], vals[5], vals[6])
		

		try:
			cursor.execute(allsql)
			#print(cursor.lastrowid)  #最后插入行的主键id
			insertID = cursor.lastrowid
			#print(db.insert_id())   #最新插入行的主键id
			db.commit()
			print('数据插入成功')
		

			


		except Exception:
			db.rollback()  #如果出现异常,回滚(
			print("数据插入失败")
	#------查看表结构--------
	# cursor.execute("show create table curvecoordinate")
	# myresult = cursor.fetchall()
	# print(myresult)
	# cursor.execute("show create table allcurve1")
	# myresult = cursor.fetchall()
	# print(myresult)

	
	for key1, val1 in Curve.items():
		Selsql = "SELECT id FROM allcurve1 WHERE CurveName='%s'" % (key1)
		# print(Selsql)
		cursor.execute(Selsql)
		myresult = cursor.fetchall()
		print(myresult[0][0])
		ID = myresult[0][0]


		


		try:
			for i in range(5):
                #ON DUPLICATE KEY UPDATE  需要给表创建索引值,索引值可以是两个数据的组合
				sql = "INSERT INTO {} (`CurveId`,`pointId`,`X`,`Y`) VALUES (%s,%s, %s, %s)  ON DUPLICATE KEY UPDATE `CurveId` = %s,`pointId` = %s".format('curvecoordinate') % (
				 ID, Curvedata['pointID'][i], Curvedata['X'][i], Curvedata['Y'][i], ID, Curvedata['pointID'][i])
				print(sql)

				res = cursor.execute(sql)  #如果插入成功,就会输出插入成功的行数,如果失败就返回0
				db.commit()
				print('数据插入成功', res)



		except Exception as e:
			db.rollback()  # 如果出现异常,回滚(
			print("坐标数据插入失败", e)


	cursor.close()
	db.close()

if __name__ == '__main__':

	Curvedata={'pointID': [1, 2, 3, 4, 5, 6, 7,], 'X': [0, 0.09962999075651169, 0.19966498017311096, 0.299699991941452, 0.3997349739074707, 0.4997699558734894, 0.5998049378395081, 0.6998399496078491, 0.7998749613761902, 0.8999099135398865],'Y': [0, 0.09962999075651169, 0.19966498017311096, 0.299699991941452, 0.3997349739074707, 0.4997699558734894, 0.5998049378395081, 0.6998399496078491, 0.7998749613761902, 0.8999099135398865]}

	Curve = {'6_base1': ['zcy', 'acce', 223.3, 234.5, 373.7, 57.7, 30.7], '6_base': ['zcy', 'acce', 155.3, 295.1, 373.7, 224, 34.7]}
	getCURVEDATA(Curvedata, Curve)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值