python 连接mysql_python连接mysql

第九天

核心任务:

操作mysql(图形界面)

建库建表

熟悉:curd语句

python操作mysql[重点]

任务:学生管理系统:数据存储在数据

1832708-20201104163003285-1369400480.png

连接MySQL建库建表

连接服务器中MySQL

信息:ip:39.98.39.173 用户名:root 密码:root

1.图形界面工具:navicat

1832708-20201104163222454-1068865114.png

2.建库

1832708-20201104163303486-1915507946.png

3.建表

分析

学生表students

学生对象包含属性(id,姓名,性别,年龄,生日,手机号,地址。。)根据业务需求随意扩展

对应列

列名

类型

要求

id

int整数

主键(primary key)自增

name

varchar(20)字符串

必须写字符串大小,不为空!

sex

enum(男,女)

性别是固定的字符用char(2)

age

int整数

phone

varchar(11)字符串

176****0805

birthday

datetime时间

addr

varchar(50)字符串

1832708-20201104164703253-1679954640.png

python操作数据库

注意:python或任何编程语言php。java。。net等,不能直接连接数据库!

需要数据库驱动(第三方模块)[比如:不同品牌手机连接到电脑,需要安装驱动包,才能传输数据]

连接不同数据库,需要下载不同的驱动包!

1832708-20201104165451441-712407094.png

python操作数据库流程

下载mysql驱动模块(pymysql)

引入模块

建连接(建立和数据库连接)

执行sql语句

非查询:增加,删,修改

查询:select

处理结果

释放资源

关连接

关游标!

驱动介绍

python操作mysql驱动/第三方模块: MySQLdb PyMysql

pymysql: 支持2.x 支持3.x

mysqldb: 只支持3.x

1 #安装模块

2 pip install pymysql

增删改

SQL

#增加

insert into 表名(列1,列2,....) values(值1,值2,...)#删除

delete from 表名 ; #删除表中所有数据!

delete from表名 where 条件;#修改

update 表名 set 列1=值1,列2=值2,....; #不加条件,修改所有列!~ update 表名 set 列1=值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 ='刘帅'deletefrom students where name ='刘晒'

1832708-20201104170115511-1654772862.png

python实现非查询

非查询:步骤一样的

区别:sql语句不同,参数个数不同!

defmy_execute(sql,params):'''非查询通用功能! sql语句, 参数列表'''

#2.连接

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()#返回影响行数!

returnnumif __name__ == '__main__':#通用

sql ='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() 游标下移

查询

importpymysqldefget_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 inresult:print(f'id:{stu[0]},名字:{stu[1]}')#4.关闭资源

cur.close()

conn.close()if __name__ == '__main__':

get_one()

任务:

增加

删改

查所有

根据名字查

1832708-20201104170854820-197871634.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值