使用Python控制Mysql实现增删改查

使用python操作mysql

连接mysql建库建表

连接服务器中的mysql
信息:IP:39.98.39.173

1.图形界面工具:navicate在这里插入图片描述
在这里插入图片描述
2.建库在这里插入图片描述

3.建表

  • 分析
    学生表students
    学生对象包含属性(ID,姓名,性别,年龄,生日,手机号,地址.....) #根据业务需求随意扩展
    对应列
    在这里插入图片描述在这里插入图片描述

python操作数据库

注意:python或任何编程语言php.java…net等,不能直接连接数据库!
需要安装对应的数据库驱动(第三方模块) [比如: 不同品牌手机连接到电脑,需要安装驱动包,才传输数据]
连接不同数据库,需要下载不同的驱动包!在这里插入图片描述

python操作数据库流程

  • 下载Mysql驱动模块(pymysql)
  • 引入模块
  • 建连接(建立与数据库连接)
  • 执行sql语句
    • 非查询:增加,删除,修改
    • 查询:select
  • 处理结果
  • 释放资源
    * 关连接
    * 关游标

驱动介绍
python操作mysql驱动/第三方模块:mysqldb pymysql

   * pymysql:支持2.x 支持3.x
   * mysqldb:只支持3.x

安装模块
pip install pymysql

增删改

sql
#增加
insert into 表名(1,列2...) values(1,值2,...)
#删除
delete from 表名; #删除表中所有数据
delete from 表名 where 条件

#修改
update 表名 set1=1,列2=2,.....;#不加条件,修改所有列
update 表名 set1=1,列2=2,....where 条件;

#例子
select * from students where sex ='男'; 
insert into students(name,sex,age,birthday,phone,addr) 
values('刘帅','女',20,now(),'17600950805','山西') ; 
update students set sex='男' where name ='刘帅' 
delete from students where name ='刘晒'

在这里插入图片描述

python实现非查询

  • 非查询:步骤一样的
  • 区别:sql语句不同,参数个数不同
def my_excute(sql,params):
		#非查询功能!sql语句,参数列表
		
		#连接
		conn=pymysql.connect(host='39.98.39.173',port=13306,user='root',passwd='root',db='1909C2',c harset='utf8') 
		print(conn) 
		# 3. 获取游标 
		cur = conn.cursor() 
		# 4. 执行sql 
		num = cur.execute(sql,params) 
		#print(f'影响行数:{num}') 
		conn.commit() # 必须手动提交到数据库! 
		# 5. 释放资源 
		cur.close() 
		conn.close() 
		# 返回影响行数! 
		return num 

		if __name__ == '__main__': 
		# 通用 s
		ql ='insert into students(name,sex,age,birthday,phone,addr) values(%s,%s,%s,%s,%s,%s)' 
		params=('王五','女',39,'2020-11-03','17600950805','山西') 
		if my_execute(sql,params)>0: 
			print('数据库操作成功!') 
		else:
			print('数据库操作失败!')

参数如何传递

sql ='insert into students(name,sex,age,birthday,phone,addr) 
values(%s,%s,%s,%s,%s,%s)' 
# 格式:一行数据就是一个元组! 
params=('王五','女',39,'2020-11-03','17600950805','山西') 
num = cur.execute(sql,params)

批量执行非查询

sql ='insert into students(name,sex,age,birthday,phone,addr) 
values(%s,%s,%s,%s,%s,%s)' 
# 格式:一行数据就是一个元组! 
params=[('王五1','女',39,'2020-11-03','17600950805','山西'),('王五2','女',39,'2020-11- 03','17600950805','山西')] 
num = cur.executemany(sql,params) # 结果大于1的

核心对象

  • 连接对象: conn= pymysql.connect(host=‘IP地址’,port=13306,user=‘用户名’,passwd=‘密 码’,db=‘数据库名’,charset='utf)
  • conn.close() #关闭
  • cur= conn.cursor() 创建游标
  • 游标 Cursor 操作数据库依靠游标!
  • num = cur.execute(sql,参数) 执行非查询,返回影响的行数!
  • num=cur.executemangy(sql,[(),(),…]) 批量执行非查询,返回影响行数!
  • cur.close()
  • cur.fetchone() 抓取1条,返回元组或None
  • cur.fetchall() 抓取所有
  • cur.fetchmany(大小) 指定抓取大小
  • cur.next() 游标下移!

查询

import pymysql 
def get_one(): 
	# 1. 连接 
	conn = pymysql.connect(host='39.98.39.173', port=13306, user='root', passwd='root', db='1909C2', charset='utf8') 
	# 2. 打开游标 
	cur = conn.cursor() 
	# 3. 执行 
	sql ='select * from students where sex = %s' 
	cur.execute(sql,('女')) 
	#result = cur.fetchone() # 返回一个元组() 默认找第1个! 
	result = cur.fetchall() # 返回多个元祖 ((),(),(),...) 
	print(result)
	for stu in result: 
		print(f'id:{stu[0]},名字:{stu[1]}') 

	# 4.关闭资源 
	cur.close() 
	conn.close() 

if __name__ == '__main__': 
	get_one()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值