python中cursor操作数据库

本文介绍了使用Python的mysql.connector模块进行数据库连接及操作的方法,包括执行SQL语句、存储过程调用等,并展示了如何获取执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

global定义全局变量
conn = mysql.connector.connect(user=user, password=password, database=database, use_unicode=True)
cursor=conn.cursor()
conn表示连接数据库,对数据的操作需要通过cursor来实现。
cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self,size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

cursor.execute(sql)
values = cursor.fetchall()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。


### SIoU 损失函数概述 SIoU (Scaled IoU) 是一种改进版的目标检测边界框回归损失函数,在传统IoU基础上进行了增强。这种损失函数旨在解决不同尺度物体之间的边界框回归问题,提供更强大的学习能力[^3]。 #### SIoU 的特点 相比传统的IoU和其他变体(如GIoU, CIoU),SIoU通过引入缩放因子来更好地处理大尺寸变化下的对象定位精度问题。具体来说: - **比例不变性**:能够适应各种大小的对象而不受其绝对尺寸的影响。 - **更好的收敛特性**:有助于加速训练过程并获得更高的最终性能指标。 - **鲁棒性强**:即使在极端情况下也能保持良好的表现。 #### 实现细节 以下是Python代码示例展示了如何定义和使用SIoU损失函数来进行边界框回归任务: ```python import torch from torch import nn class SIoULoss(nn.Module): def __init__(self, eps=1e-7): super(SIoULoss, self).__init__() self.eps = eps def forward(self, pred_bboxes, target_bboxes): """ 计算两个边界框间的SIoU距离 参数: pred_bboxes: 预测的边界框坐标 Tensor 形状为[N, 4], xywh格式. target_bboxes: 真实标签边界框坐标 Tensor 形状为[N, 4], xywh格式. 返回: siou_loss: 边界框间SIoU距离平均值 """ # 将中心点形式转换成左上角右下角的形式 px1y1, px2y2 = pred_bboxes[:, :2] - pred_bboxes[:, 2:] / 2, \ pred_bboxes[:, :2] + pred_bboxes[:, 2:] / 2 tx1y1, tx2y2 = target_bboxes[:, :2] - target_bboxes[:, 2:] / 2, \ target_bboxes[:, :2] + target_bboxes[:, 2:] / 2 # 获取交集区域面积以及并集总面积 inter_area = (torch.min(px2y2, tx2y2) - torch.max(px1y1, tx1y1)).clamp(0).prod(dim=-1) union_area = ((px2y2 - px1y1).prod(-1) + (tx2y2 - tx1y1).prod(-1) - inter_area) iou = inter_area / (union_area + self.eps) # 计算中心点差距向量及其长度平方 center_dist_squared = ( (pred_bboxes[..., :2] - target_bboxes[..., :2]) ** 2).sum(axis=-1) # 对角线最长边长计算 enclose_wh = (torch.max(px2y2, tx2y2) - torch.min(px1y1, tx1y1)).clamp(min=self.eps) diagonal_len_squared = (enclose_wh ** 2).sum(dim=-1) # 定义额外惩罚项C C = center_dist_squared / diagonal_len_squared # 缩放因子S S = 4 * torch.sigmoid(pred_bboxes[..., 2:]) * \ torch.sigmoid(target_bboxes[..., 2:]) v = (4 / math.pi ** 2) * \ torch.pow(torch.atan(w_true/h_true)-torch.atan(w_pred/h_pred), 2) alpha = v/(v-(iou-S*C)+eps) loss = 1-iou+(alpha*v)+(S*C) return loss.mean() ``` 此实现基于PyTorch框架,并考虑到了数值稳定性因素以防止除零错误等问题的发生。需要注意的是实际应用时可能还需要根据具体情况调整超参数设置或优化策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值