Python操作Mysql数据库步骤以及常用方法

Python对Mysql数据库的操作,大致分为以下五个部分

  1. 引入pymysql模块
  2. 使用connect方法连接数据库
  3. 通过cursor方法创建一个游标对象
  4. 通过游标执行SQL语句
  5. 从游标执行结果中读取数据

1、下载pymysql包

  • 使用pip install pymysql
  • 在pycharm中直接下载

2、连接数据库

连接对象 = pymysql.connect(host='主机', user='用户', password='密码', database='数据库', port='端口号',charset='字符集')

'''
说明:
	主机 —— 数据库服务器所在的主机,可以是域名或IP地址
	用户 —— 可以登录服务器的用户名
	密码 —— 可以验证用户身份
	数据库 —— 要使用的数据库,连接服务器的同时设置当前数据库
	port —— 要使用的MySql端口,默认通常是OK(默认:3306)
	charset —— 设置来凝结到数据库党的交互字符集(必须设置,否则中文会乱码) 
'''

注意:connect中的charset是’utf8’,而不是’utf-8’。还有就是,port为number而不是string格式

3、连接对象的常用方法

1)cursor()
#引入pymysql
import pymysql

#调用pymysql的connect方法连接数据库
db = pymysql.connect(host='127.0.0.1',user='root',passqord='root',database='post',port=3306,charset='utf8')

#利用cursor()方法创建出游标
link = db.cursor()

#利用游标的execute()方法执行SQL语句
sql='select * from student'
link.execute(sql)

#读取数据
data=link.fetchall()


2)close()
#关闭数据库连接

#引入模块
import pymysql

#连接数据库
db = pymysql.connect(host='localhost',user='root',password='root',database='post',port=3306,charset='utf8')

db.close()
#关闭数据库以后无法再获取到数据

'''
!!!!特此强调:
	关闭数据库连接以后,无法再获取数据,但是内存中的db对象仍然存在
'''
3)select_db()
  • 选择1个数据库作为当前操作的数据库
  • 语法:db.select_db(‘数据库名’)

4、PyMysql操作数据库之发送SQL语句

1)execute()
  • 将一条SQL语句发送到数据库服务器并返回执行结果
  • 语法:游标对象.execute(‘SQL语句’,参数)
#连接数据库

#通过连接对象创建游标
link = db.cursor()

#通过游标执行查询操作
link.execute('select * from studnet')

#如果args是列表或者元组,则%s可以用作查询中的占位符。如果args是字典,则%(name)可以用作查询中的占位符

link.execute('select * from student where stu_name=%s',('关羽'))
'''
!!!!特此强调:
	SQL语句内的%s占位符,不能加引号
	在执行语句需要数据拼接时使用参数进行查询,可避免SQL注入
'''
2)executemany()
  • 针对一个SQL语句运行多个数据
  • 语法:游标对象.executemany(‘SQL语句’,[参数1,参数2…参数n])
#通过连接对象创建游标
link -= db.cursor()

#通过executemany与参数配合实现批量新增数据
link.executemany('insert into studnet values(%s,%s)',[('大乔'30),('小乔'25)])
'''
	此方法可提高多行INSERT 和REPLACE的性能,否则,它等同于使用execute()循环 args
'''

5、PyMysql操作数据库之结果集处理

1)fetchone()
  • 获取下一行数据(获取一行数据,数据指针自动移动到下一行)
  • 语法:游标.fetchone()
#通过游标执行查询操作
link.execute('select * from student')

#通过fetchone获取下一行数据
data=link.fetchall()

#输出获取到的数据
print(data)

#通过fetchone获取下一行数据
data=link.fetchall()

#输出获取到的数据
print(data)

'''
	类似于指针的东西,会一直向下指
'''
2)fetchall()
  • 获取全部行的数据
  • 语法:游标.fetchall
#fetchall获取所有数据
data = fetchall()
print(data)

#遍历数据:
for value in data:
	print(f"姓名:{value[0]} 年龄:{value[1]}")
3)fetchmany()
  • 获取指定数量的数据
  • 语法:游标.fetchallmany(数量)
#通过游标执行查询操作
link.execute('select * from student')

#通过fetchone获取下一行数据
data = link.fetchmany(3)

#输出获取到的数据
print(data)

6、事务的操作流程

'''
事务:
	1、begin
		开启事务机制(默认开启)
		语法:连接对象.begin()
	2、commit
		提交事务,将所有已经执行的语句,永久修改到数据库中
		语法:连接对象.commit()
	3、rollback
		事务回滚
		语法:连接对象.rollback()
'''

import pymysql
db = pymysql.connect(host='127.0.0.1',user='root',password='root',database='post',port=3306,charset='utf8')
link = db.cursor()

#开启事务
db.begin()

sql = "insert into news(title,content) values('今天发生了一件大事','狗丢了')"
r = link.execute(sql)

#提交事务
db.commit()

print(r)
'''
!!!!特此强调:
	事务的数据表必须是innodb才行
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值