mysql连接原生语句_Mysql存储之原生语句操作(pymysql)

Mysql存储之原生语句操作(pymysql)

关系型数据库是基于关系模型的数据库,而关系模型是通过二维表时实现的,于是构成了行列的表结构。

表可以看作是某个实体的集合,而实体之间存在联系,这个就需要通过表之间的关联关系来体现,比如主键的关联关系,多个表组成了一个数据库,也就是关系型数据库。其中Mysql.oracle,sql server,sqlite等都属于关系型数据库,这里主要说mysql的操作。

原生语句操作

所谓的原生语句就是mysql自带的增删改查的语句,即insert,delete,update,select。下面我们用python3为例。

在python3中数据库的链接一般用pymsql模块。

第三方库的安装

pip install pymysql

创建数据库的链接

前提我们 配置好了mysql数据库,并且安装上了pymysql模块。

然后我们需要导入pymsql,看下面示例代码:

conn = pymysql.connect(host='localhost',

port=3306, user='root',

passwd='1234', db='user', charset='utf8mb4')#声明mysql连接对象

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#查询结果以字典的形式

cursor.execute(sql语句字符串)#执行sql语句

conn.close()#关闭链接

事务处理

事务机制可以确保数据的一致性,如果我们有个逻辑是删除一条数据然后插入,如果我们在插入过程中失败了,那么之前删除的数据没有进行插入,就造成了数据的缺失,为了避免这种缺失情况的发生,我们使用使用来进行统一处理,如果以上操作都成功了才提交,否则回滚,就当什么也没发生一样。用代码就下面的写法

try:

cursor.execute(sql)

conn.commit()

except:

conn.rollback()

动态插入数据

传入一个动态变化的字典即可。

比如说一开始的时候我们有这样的一个表叫user,需要保存三个字段id,name,age然后我们可以构建下面的字典和表名

d={'id':'1001','name':'zhangsan','age':'17'}

tables='user'

d={'id':'1001','name':'zhangsan','age':'17'}

tables='user'

keys=','.join(d.key())

values=','.join(['%s']*len(d))

sql=f'INSERT INTO {table}({keys})VALUES({values})'

try:

if cursor.execute(sql,tuple(d.values())):

print('ok')

conn.commit()

except:

print('no')

conn.rollback()

conn.close()

现在我们就完成了插入操作,但是有的时候我们需要 主键存在是更细,不存在时插入怎么办呢,首先我们看下面语句

动态更新插入数据

INSERT INTO user(id,name,age) VALUES(%s,%s,%s) ON DUPLICATE KEY UPDATE id=%s,name=%s,age=%s

ON DUPLICATE KEY UPDATE

可以达到以下目的:

向数据库中插入一条记录:

若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。

否则插入一条新的记录。

然后我们对上面整体做一个代码整理。如下

d={'id':'1001','name':'zhangsan','age':'17'}

tables = 'name'

keys = ','.join(data_dic.keys())

values = ','.join(['%s'] * len(data_dic))

sql =f'INSERT INTO {tables}({keys})VALUES({values}) ON DUPLICATE KEY UPDATE '

update = ','.join([f"{k}={v}" for k,v in data_dic.items()])

sql += update

try:

if cursor.execute(sql,tuple(d.values())):

print('ok')

conn.commit()

except:

print('no')

conn.rollback()

conn.close()

查询语句

查询语句就比较简单了用select。下面直接看代码

sql='select * from user limit 1,10'

cursor.excute(sql)

one=cursor.fetchone()

while one:

one=cursor.fetchone()

#推荐使用while循环配合fetchone读取所有数据,随用随取,效率高。

删除语句

删除语句用delete语句,但是只要commit里之后才能生效。

tale='user'

id='id=123'#可以直接把条件作为字符串传过来。

sql=f'delete from {table} where {id}'

try:

cursor.execute(sql)

conn.commit()

except:

conn.rollback()

conn.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值