Python连接MySQL数据库之CRUD完整代码
一、简介
1、概括
目前而言,一般都用python3.x版本,所以连接MySQL数据库,我的建议是使用PyMySQL库,非常的好用。如果是Python2的版本,就使用mysqldb。当然我主要使用PyMySQL库,主要参考的代码也是官网上的,然后我再自己整合修改。
2、pymysql的安装
pip3 install PyMySQL
不管安装如何,网上也有博主解释的很详细了,具体的我就不细说了,主要说CRUD操作及代码实现。
二、具体代码
1、导入模块
# 导入pymysql模块
import pymysql
2、创建连接mysql的类
# 创建连接mysql的类
class TestMysql:
# 初始化变量
def __init__(self, username, host, port, password, database):
self.username = username
self.host = host
self.port = port
self.password = password
self.database = database
# 创建数据库连接
def connect_mysql(self):
connect = pymysql.connect(user=self.username, host=self.host, port=self.port, passwd=self.password,
database=self.database)
return connect
3、再创建一个类来承载CRUD操作
class TestFind:
def __init__(self, db):
self.db = db
4、查询数据库的版本
# 查询数据库的版本
def find_version(self, db):
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
5、新增操作
# 新增数据表
def create_user(self, db):
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
print("新增成功!!!!")
6、插入操作
# 数据库的插入操作
def insert_mysql(self, db):
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
print("插入成功!!!!")
7、更新操作
# 数据库更新操作
def update_mysql(self, db):
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
print("更新成功!!!")
8、删除操作
# 数据库删除操作
def delete_data(self, db):
# 使用cursor() 方法获取操作游标
cursor = db.cursor()
# SQL删除语句
sql = "Delete from employee where AGE>%s" % (20)
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
print("删除成功!!!")
9、关闭数据库
# 关闭数据库的提示信息
def close_mysql(self, db):
# 关闭数据库连接
db.close()
print("MySQL connection closed.")
10、创建主函数
if __name__ == "__main__":
# 定义变量
username = 'root'
host = 'localhost'
port = 3306
password = '自己的数据库密码'
database = '数据库名称'
try:
mysql = TestMysql(username, host, port, password, database)
duixiang = TestFind(mysql)
db = mysql.connect_mysql()
print("MySQL connection finished.")
duixiang.find_version(db)
duixiang.create_user(db)
duixiang.insert_mysql(db)
duixiang.update_mysql(db)
duixiang.delete_data(db)
duixiang.close_mysql(db)
except Exception as e:
print("Error connecting to MySQL: " + str(e))
#except pymysql.err.OperationalError as e:
#print("连接意外断开、 数据库名未找到: " + str(e))
三、完整代码
# 导入pymysql模块
import pymysql
# 创建连接MYSQL的类
class TestMysql:
# 初始化变量
def __init__(self, username, host, port, password, database):
self.username = username
self.host = host
self.port = port
self.password = password
self.database = database
# 创建数据库连接
def connect_mysql(self):
connect = pymysql.connect(user=self.username, host=self.host, port=self.port, passwd=self.password,
database=self.database)
return connect
class TestFind:
def __init__(self, db):
self.db = db
# 查询数据库的版本
def find_version(self, db):
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
# 新增数据表
def create_user(self, db):
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
print("新增成功!!!!")
# 数据库的插入操作
def insert_mysql(self, db):
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
print("插入成功!!!!")
# 数据库更新操作
def update_mysql(self, db):
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
print("更新成功!!!")
# 数据库删除操作
def delete_data(self, db):
# 使用cursor() 方法获取操作游标
cursor = db.cursor()
# SQL删除语句
sql = "Delete from employee where AGE>%s" % (20)
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
print("删除成功!!!")
# 关闭数据库的提示信息
def close_mysql(self, db):
# 关闭数据库连接
db.close()
print("MySQL connection closed.")
if __name__ == "__main__":
# 定义变量
username = 'root'
host = 'localhost'
port = 3306
password = '自己的数据库密码'
database = '数据库名称'
try:
mysql = TestMysql(username, host, port, password, database)
duixiang = TestFind(mysql)
db = mysql.connect_mysql()
print("MySQL connection finished.")
duixiang.find_version(db)
duixiang.create_user(db)
duixiang.insert_mysql(db)
duixiang.update_mysql(db)
duixiang.delete_data(db)
duixiang.close_mysql(db)
except Exception as e:
print("Error connecting to MySQL: " + str(e))
except pymysql.err.OperationalError as e:
print("连接意外断开、 数据库名未找到: " + str(e))