python数据库的简单应用
什么是 PyMySQL?
-
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
-
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
PyMySQL 安装
$ pip3 install PyMySQL
连接数据库
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Connection():
try:
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
print('数据库连接成功!')
except pymysql.Error as e:
print('数据库连接失败'+str(e))
finally:
db.close()
Connection()
- 1 导入数据库模块
- 2 调用pymysql下的connect函数连接数据库
捕捉异常,出错的时候方便排除错误
connect()函数
host 是 localhost
user 是 用户,使用root或者其他用户
password 是 数据库密码,填写自己的密码
database 是 我们要连接哪一个数据库,我连接的是students数据库
运行结果:
创建数据表
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def CreateTable():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
try:
cur.execute('DROP TABLE IF EXISTS student')
sqlQuery = '''CREATE TABLE student(
id int primary key,
name CHAR(20) NOT NULL ,
classroom CHAR(20),
email CHAR(20),
age int )'''
cur.execute(sqlQuery)
print("数据表创建完成!")
except pymysql.Error as error:
print("数据表创建失败:" + str(error))
db.rollback()
finally:
db.close()
CreateTable()
在students数据库中创建student表
- 用db的cursor创建一个游标
- SQL语句太长就保存下来
- 使用游标的execute函数执行SQL语句
- 如果出现异常使用rollback函数进行数据回滚操作
运行结果:
增加一条记录
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Insert():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
sqlQuery = " INSERT INTO Student (id, name, classroom, email, age) VALUE (%s,%s,%s,%s,%s) "
value = (1010, "大黄","1班", "123.com", 20)
try:
cur.execute(sqlQuery, value)
db.commit()
print('数据插入成功!')
except pymysql.Error as error:
print("数据插入失败:" + str(error))
db.rollback()
finally:
db.close()
Insert()
在students数据库的student表中插入一条学生记录
- sql语句的参数保存在value中
- 如果插入失败,就进行数据回滚操作
- 如果成功要进行commit提交操作
- 最后关闭
运行结果:
更新一条记录
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Update():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
sqlQuery = "UPDATE Student SET age= %s WHERE name=%s"
name = "大黄"
age = 19
value = age, name
try:
cur.execute(sqlQuery, value)
db.commit()
print('数据更新成功!')
except pymysql.Error as e:
print("数据更新失败:" + str(e))
# 发生错误时回滚
db.rollback()
finally:
db.close()
Update()
更新students数据库的student表的一条记录
运行结果:
查找信息
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Find():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
sqlQuery = "SELECT * FROM student"
try:
cur.execute(sqlQuery)
results = cur.fetchall()
for row in results:
print('学号:%s , 姓名:%s ,班级:%s , 邮箱:%s , 年龄:%s ' % (row[0], row[1], row[2], row[3],row[4]))
except pymysql.Error as e:
print("数据查询失败:" + str(e))
finally:
db.close()
Find()
查询students数据库的student表的数据
- 游标的fetchall()函数会拿到所有结果
- 循环输出所有结果
运行结果:
删除一条信息
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Deletedata():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
sqlQuery = "DELETE FROM Student where name=%s"
try:
cur.execute(sqlQuery, "大黄")
db.commit()
print('Date Deleted Successfully')
except pymysql.Error as e:
print("数据删除失败:" + str(e))
# 发生错误时回滚
finally:
db.rollback()
Deletedata()
删除students数据库的student表的一条记录
运行结果:
删除一张表
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
def Delete():
db = pymysql.connect(host="localhost", user="root", password="123", database="students")
cur = db.cursor()
sqlQuery = 'DROP TABLE IF EXISTS student'
try:
cur.execute(sqlQuery)
db.commit()
print('表删除成功!')
except pymysql.Error as e:
print("表删除失败"+str(e))
finally:
db.close()
Delete()
删除students数据库的student表
运行结果: