2024年最新Python数据库操作 ---- pymysql教学_pymysql操作数据库(2),2024年最新面试必备问题

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


解释:  
 在连接数据的时候需要指定相应的参数


* host 数据库ip地址,如果是本地可以用localhost或127.0.0.1 如果是远程就需要指定正确的ip地址
* user 用户名
* password 密码
* port 端口号 如果不指定就默认是3306


cursor():获取数据库的操作游标  
 execute() 执行SQL语句,把要进操作的内容写成SQL语句,  
 fetchone() 读取一条数据  
 close() 断开连接,释放资源  
 “select version()” sql语句的执行结果  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1316494854234df88ae09265034df0d7.png)


### 创建数据库



import pymysql

连接数据库

db = pymysql.connect(host=‘localhost’,user=‘root’,password=‘123456’)

创建数据库的游标

cursor = db.cursor()

创建数据库spiders

cursor.execute(“create database spiders”)

关闭连接

db.close()


![在这里插入图片描述](https://img-blog.csdnimg.cn/d3b40baba0ee4f7a8233f429065b5305.png)  
 创建数据库命令执行一次就可以,后面我们在创建的数据库中进行其他的操作,如果创建的数据已经存在程序会报错`"Can't create database 'spiders'; database exists"`  
 拓展:



> 
> 如果在创建数据库的不能确认数据库是否存在,但是也不想在创建数据库的时候发生报错可以使用下列语句:`create database if not exists dbname`
> 
> 
> 


### 创建数据表、


表必须创建在数据库内,所以我们需要在连接数据库以后,需要指定操作那个数据库



import pymysql

连接数据库

db = pymysql.connect(host=‘localhost’,user=‘root’,password=‘123456’,port=3306,db=‘spiders’)

创建数据库的游标

cursor = db.cursor()
sql = “create table if not exists students(id varchar(255) not null,name varchar(255) not null,age int not null,primary key (id))”
cursor.execute(sql)

db.close()


![在这里插入图片描述](https://img-blog.csdnimg.cn/c0ee96cfb24c489fa2c6c15dd0bca995.png)  
 这次的在连接mysql的时候`connect`函数新增了一个参数,`db='spiders'`指定我们要连接的数据库,后面创建的表也会创建到当前数据库。


创建数据库的`sql`语句是 `"create table if not exists students(id varchar(255) not null,name varchar(255) not null,age int not null,primary key (id))"`  
 创建的数据库名为`students`,三列 `id`、`name`、`age`,都是非空,主键为`id`


### 插入数据



import pymysql

db = pymysql.connect(user=‘root’,password=‘123456’,host=‘localhost’,port=3306,db=‘spiders’)
cursor = db.cursor()
id = ‘10005’
name = ‘zhangsan’
age = ‘20’
#方式1

sql = “insert into students(id,name,age) values('”+id+“‘,’”+name+“‘,’”+age+“')”

cursor.execute(sql)

方式2

sql = “insert into students(id,name,age) values(‘{}’,‘{}’,‘{}’)”.format(id,name,age)

cursor.execute(sql)

方式3(推荐)

sql = “insert into students(id,name,age) values(%s,%s,%s)”
cursor.execute(sql,(id,name,age))
db.commit()
db.close()


通过三种sql语句的编写形式我们能够发现。方式3的最为简洁,通过使用`%s`来进行占位,然后再通过`execute()`函数将数据传入sql语句中组成完整的sql语句。



> 
> 在执行execute()方法之后必须要commit()方法才能将数据插入到表中,这个设计到了事务的原子性问题,事务机制可以确保数据一致性,事务有4个属性:原子性、一致性、隔离性、持久性。
> 
> 
> 




| 属性 | 描述 |
| --- | --- |
| 原子性 | 事务是一个不可分割的工作单位,事务中包括的操作要么都执行,要么都不执行 |
| 一致性 | 事务必须是数据库中一个一致性状态转变到另一个一致性状态,一致性与原子性是密切相关的 |
| 隔离性 | 一个事务不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务时隔离的,并发的各个事务之间不能相互干扰 |
| 持久性 | 持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响 |


### 查询数据


在数据库操作的过程中使用最多的就是查询操作



import pymysql

db = pymysql.connect(user=‘root’,password=‘123456’,host=‘localhost’,port=3306,db=‘spiders’)
try:
sql = ‘select * from students’
cursor = db.cursor()
cursor.execute(sql)
d1 = cursor.fetchone()
print(“获取一条数据”,d1)
all_d = cursor.fetchall()
print(“获取所有数据”,all_d)
# sql = “insert into students(id,name,age) values('”+id+“‘,’”+name+“‘,’”+age+“')”
except:
print(“Error”)
db.close()


数据库中的数据  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2150bebaf00f4dde9f1466ea0e1e523c.png)  
 输出:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/050334e82aa540489a85198e2285e4ec.png)  
 通过结果我们能够看到`etchone()`执行正常,拿出了一条数据,但是`fetchall()`明明是查询所有,但是结果只有除了第一条之外的数据,关于这个现象我们可以从游标的角度来解释,一开始游标在第一行执行`etchone()`之后游标就跑到第二行,再执行`fetchall()`的时候就从第二行开始查询直至末尾。  
 可以简单的理解etchone()查询游标所在的一行数据,fetchall()查询当前游标至结束的所有行数据。


使用where进行条件查询


查询id大于10003的数据



import pymysql

db = pymysql.connect(user=‘root’,password=‘123456’,host=‘localhost’,port=3306,db=‘spiders’)
try:
sql = ‘select * from students where id>10003’
cursor = db.cursor()
cursor.execute(sql)
all_d = cursor.fetchall()
print(“获取所有数据”,all_d)
# sql = “insert into students(id,name,age) values('”+id+“‘,’”+name+“‘,’”+age+“')”
except:
print(“Error”)
db.close()


输出:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ba65601bed914cdf882179fba75aec86.png)


### 更新数据


跟新数据,有时候我们再会对数据库中原来的数据进行修改



import pymysql

db = pymysql.connect(user=‘root’,password=‘123456’,host=‘localhost’,port=3306,db=‘spiders’)
try:
sql = ‘update students set name=%s where id=%s’
cursor = db.cursor()
cursor.execute(sql,(‘李四’,‘10004’))
db.commit()
except:
db.rollback()
db.close()


### 删除数据


根据条件删除数据,删除id小于10004的数据



import pymysql

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值