pymysql的用法

pymysql的用法

pymysql 链接和创建数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pymysql
try:
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#使用execute()方法执行sql,如果表存在则删除
cursor.execute('drop table if EXISTS student')
#创建表的sql
sql='''
create table student(
sno int(8) primary key auto_increment,
sname varchar(30) not null,
sex varchar(5) ,
age int(2),
score float(3,1)
)
'''
cursor.execute(sql)
print('创建表成功!')
db.close()
except:
print('创建表失败')

插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#插入sql语句
sql='''
insert into student(sname,sex,age,score) values(%s,%s,%s,%s)
'''
try:
#执行sql语句
cursor.execute(sql,('李四','woman',25,99.6))
#提交事务
db.commit()
print('插入成功')
except Exception as e:
print(e)
#如果出现异常,回滚
db.rollback()
print('插入失败')
finally:
#关闭数据库连接
db.close()

插入多条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#插入sql语句
sql='''
insert into student(sname,sex,age,score) values(%s,%s,%s,%s)
'''
args=[('王五','woman',22,98.6),('赵六','man',21,99.1)]
try:
#执行sql语句
cursor.executemany(sql,args)
#提交事务
db.commit()
print('插入成功')
except Exception as e:
print(e)
#如果出现异常,回滚
db.rollback()
print('插入失败')
finally:
#关闭数据库连接
db.close()

查询数据

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

fetchall(): 接收全部的返回结果行.

rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#查询年龄大于等于23的所有学生信息
sql='select * from student where age>=22'
try:
#执行sql
cursor.execute(sql)
#获取查询结果
results=cursor.fetchall()
for row in results:
sno=row[0]
sname=row[1]
sex=row[2]
age=row[3]
score=row[4]
#输出
print('sno:',sno,'sname:',sname,'sex:',sex,'age:',age,'score:',score)
except Exception as e:
print(e)
print('查询失败')
finally:
db.close()

模糊查询——like

这里我查询的是之前通过爬虫爬取下来的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','crawl')
#创建游标对象cursor
cursor=db.cursor()
#模糊查询,所有题目中带有股票二次的信息都会显示出来,所以最后的str可以替换
sql = "SELECT * FROM 经济新闻 WHERE title_format LIKE '%%%%%s%%%%'" % "股票"
try:
#执行sql
cursor.execute(sql)
#获取查询结果
results=cursor.fetchall()
for row in results:
id_fetches=row[0]
url=row[1]
source_name=row[2]
article_source=row[3]
title_format=row[4]
pubtime=row[5]
#输出
print('id_fetches:',id_fetches,'url:',url,'source_name:',source_name,'article_source:',article_source,'title_format:',title_format,'pubtime:',pubtime)
except Exception as e:
print(e)
print('查询失败')
finally:
db.close()

数据库更新操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#将sno=5的学生成绩修改为99.5
sql='update student set score=%s where sno=%s'
try:
#执行sql
cursor.execute(sql,(99.5,5))
#提交数据
db.commit()
print('修改成功')
except:
print('修改失败')
db.rollback()
finally:
db.close()

删除数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pymysql
#创建与数据库的连接
db=pymysql.connect('localhost','root','root','XXX')
#创建游标对象cursor
cursor=db.cursor()
#删除sql
sql='delete from student where age < 22'
try:
#执行sql语句
cursor.execute(sql)
#提交事务
db.commit()
print('删除数据成功')
except:
db.rollback()
print('删除数据失败')
finally:
#关闭连接
db.close()

-------------本文结束,感谢您的阅读-------------