python操作MySQL

import pymysql
import MySqldb # 这两个库都可以,这个库需要下载 pip install mysqlclient

首先连接数据库服务

conn = pymysql.connect( # 创建数据库连接
host = ‘127.0.0.1’, # 要连接的数据库所在主机ip
user = ‘root’, # 数据库登录用户名
password = ‘19971996’, # 登录用户密码
charset = ‘utf8’, # 注意,编码不能写utf-8
database = ‘haha’, # 连接的数据库名
port = 3306 # 端口
)

创建一个游标

cursor = conn.cursor() # 返回的结果是元祖形式。

print(’*********************************’)

编辑sql语句

创建数据表,多行语句可以向下面这样写

sql = “”“create table if not exists heihei(
id int(11) primary key auto_increment,
name varchar(10) not null,
age int(10),
beizhu varchar(100)
) character set = utf8;
“””

使用游标执行sql语句

cursor.execute(sql)

print(’*********************************’)

插入数据

编辑sql语句

sql = “insert into heihei(name,age,beizhu) values (‘张三’, 20, ‘没有什么可备注的’)”

上面的sql语句同等下面的语句

sql = “insert into heihei(name,age,beizhu) values (%s,%s,%s)”
data = ‘张三’
age = 20
bz = ‘没有什么可备注的’

使用游标执行sql语句

cursor.execute(sql,[data,age,bz])

注意,涉及写入数据的,要提交数据到数据库执行

conn.commit()

print(’*********************************’)

插入多条数据

execute方法在添加数据的时候,一次插入一条记录,下面方法教使用executemany方法一次插入多条记录。

data = [
(‘扎克伯格’, 2018, ‘21天完全入门Java’),
(‘李纳斯’, 2017, ‘Linux学习手册’),
(‘比尔盖茨’, 2018, ‘MySQL从删库到跑路’)
]
sql = “insert into heihei(name,age,beizhu) values(%s, %s, %s)”
cursor.executemany(sql,data)

# 注意,涉及写入数据的,要提交数据到数据库执行

conn.commit()

print(’*********************************’)

数据回滚,当添加到错误的数据,可使用数据回滚,恢复数据到修改之前。

插入数据

编辑sql语句

sql = “insert into heihei(name,age,beizhu) values (%s,%s,%s)”
data = ‘张三’
age = ‘错误的age’
bz = ‘没有什么课备注的’
try:
# 使用游标执行sql语句
cursor.execute(sql,[data,age,bz])
# 注意,涉及写入数据的,要提交数据到数据库执行
conn.commit()
except:
print(‘数据异常!’)
conn.rollback() # 使用rollback方法让数据回滚,可以恢复数据到修改之前,相当于撤销吧。

print(’*********************************’)

更新操作(修改操作)

下面的例子将name行为张三的age值修改为22,注意:如果有多行name同值的话,可以在where后面使用and再加条件。

cursor.execute(“update heihei set age=%s where name=%s;”,[22,‘张三’])
conn.commit()

print(’*********************************’)

查询数据

查询是最最要但也是最复杂的一个操作了。我们分为fetch操作、游标两部分来说。

1、fetch操作

‘’’
插入、更新、删除操作必须再执行commit操作之后才会生效,而查询操作也只有在执行fetch操作之后才会生效,
fetch操作包括3个方法,fetchone、fetchall、fetchmany。
‘’’

- fetchall方法:查询指定的所有记录。

cursor.execute(“select * from qiancheng where id < %s;”,[5])
a = cursor.fetchall()
print(a) # 输出的结果以元祖的形式来输出

- fetchmoany方法:查询指定数量的记录。

cursor.execute(“select * from qiancheng where id < %s;”,[5])
a = cursor.fetchmany(2) # 参数写指定数量
print(a)

fetchmany(size)是取出符合查询条件的最前面的指定数量记录。

- fetchone方法:取出第一条记录。

cursor.execute(“select * from qiancheng where id < %s;”,[5])
a = cursor.fetchone() # 取出第一条符合查询条件的数据。
print(a)
print(’*********************************’)

2、游标,游标的操作只要修改上面创建游标的哪行代码就可以了

之前使用的游标都是cursor类型,除此以外,还有DictCursor、SSCursor、SSDdictcursor

- DictCursor类型,返回的是字典形式

cursor = conn.cursor(pymysql.cursors.DictCursor) # 创建一个字典游标

- SSCursor和SSDictCursor

‘’’
SSCursor和SSDictCursor被称为流式游标,这类游标不会像上面使用的Cursor和DictCursor那样,
一次性返回所有的数据,流式游标会陆陆续续一条一条得返回查询数据,
所以这类游标适用于内存低、网络带宽小、数据量大的应用场景中。
流式游标的使用方法类似于迭代器。
‘’’
cursor = conn.cursor(pymysql.cursors.SSCursor)
cursor.execute(“select * from qiancheng;”)
a = cursor.fetchone()
while a:
print(a)
a = cursor.fetchone()

print(’*********************************’)

删除数据

解说下面例子:删除name=张三的行数据

cursor.execute(“delete from heihei where name=%s;”,[‘张三’])
conn.commit()

print(’*********************************’)

执行完数据库之后,记得关闭游标

cursor.close()

执行完数据库之后,记得关闭数据库连接

conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值