PyMySQL
1.安装PyMySQL
cmd 打开Windows命令界面,输入pip install PyMySQL安装
pip install PyMySQL
2.连接数据库
通过pymysql库的connect()方法尝试连接数据库。并传入主机名+端口号、用户名、密码、要连接的数据库等参数。
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 对数据库进行增删改查等操作 # 。。。。。。。 # 关闭数据库连接 db.close()
3.创建表
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 获取一个游标(数据库操作的对象) cursor = db.cursor() # 需要执行的SQL语句 sql = '''CREATE TABLE IF NOT EXISTS course( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VARCHAR(20), c_weight INT )''' # 执行SQL语句 cursor.execute(sql) # 关闭数据库连接 db.close()
4.插入操作
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 获取一个游标(数据库操作的对象) cursor = db.cursor() # 对数据库进行插入操作 sql = 'INSERT INTO course(c_name, c_weight) VALUES("java", 2)' try: # 执行SQL语句 cursor.execute(sql) # 提交数据库事务处理 db.commit() except: # 如果出现错误就回滚 db.rollback() # 关闭数据库连接 db.close()
5.删除操作
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 获取一个游标(数据库操作的对象) cursor = db.cursor() # 对数据库进行插入操作 del_course = 'python' sql = 'DELETE FROM course WHERE c_name = "%s"' % del_course try: # 执行SQL语句 cursor.execute(sql) # 提交数据库事务处理 db.commit() except: # 如果出现错误就回滚 db.rollback() # 关闭数据库连接 db.close()
6.修改操作
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 获取一个游标(数据库操作的对象) cursor = db.cursor() # 对数据库进行插入操作 update_course, new_weight = 'java', 5 sql = 'UPDATE course SET c_weight = %d WHERE c_name = "%s"' % ( new_weight, update_course) try: # 执行SQL语句 cursor.execute(sql) # 提交数据库事务处理 db.commit() except: # 如果出现错误就回滚 db.rollback() # 关闭数据库连接 db.close()
7.查询操作
注意:查询操作有一点特点:
在execute()之后,需要通过
fetchall():获取所有的查询结果
fetchone():获取一个查询结果
rowcount:返回结果数(这是个属性)
# 导入mysql库 import pymysql # 打开数据库连接 传入连接数据库的几个参数: # 数据库服务器所在的主机+数据库的端口号 # 登录数据库的用户名 # 登录数据库的密码 # 在mysql中连接的数据库 db = pymysql.connect('localhost', 'root', '123', 'school') # 获取一个游标(数据库操作的对象) cursor = db.cursor() # 对数据库进行插入操作 sql = 'SELECT * FROM course' try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录的列表 results = cursor.fetchall() #print(type(results)) # typle for row in results: c_id = row[0] c_name = row[1] c_weight = row[2] print('name = %s, weight = %d' % (c_name, c_weight)) # 提交数据库事务处理 db.commit() except: # 如果出现错误就回滚 db.rollback() # 关闭数据库连接 db.close()
8.封装
考虑到数据库的增删改查操作中,大部分的内容都是类似的,考虑封装到一个类中
创建MySQLHelper.py文件,编写数据库辅助类。
# 导入mysql库 import pymysql class MySQLHelper(object): def __init__(self, host, port, user, passwd, db, charset='utf8'): self.host = host self.port = port self.user = user self.passwd = passwd self.db = db self.charset = charset # 数据库连接 def connect(self): # 打开数据库连接 self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db, charset=self.charset) # 获取一个游标(数据库操作的对象) self.cursor =self.conn.cursor() # 关闭数据库连接 def close(self): self.cursor.close() self.conn.close() # 增加 # INSERT INTO course(c_name, c_weight) VALUES(%s, %d) def insert(self, sql, param=()): return self.__edit(sql, param) # 删除 def delete(self, sql, param=()): return self.__edit(sql, param) # 修改 def update(self, sql, param=()): return self.__edit(sql, param) # 增删改通用的代码 def __edit(self, sql, param=()): count = 0 try: # 连接数据库 self.connect() # 执行SQL语句 count = self.cursor.execute(sql, param) # 提交数据库事务处理 self.conn.commit() except Exception as e: # 如果出现错误就回滚 print(e) self.conn.rollback() # 关闭数据库连接 self.close() return count # 查询所有 def get_all(self, sql, param=()): result = () # 返回的结果是一个元组 try: # 连接数据库 self.connect() # 执行SQL语句 self.cursor.execute(sql, param) # 获取查询的内容 result = self.cursor.fetchall() # 提交数据库事务处理 self.conn.commit() except Exception as e: # 如果出现错误就回滚 print(e) self.conn.rollback() # 关闭数据库连接 self.close() return result # 查询一个 def get_one(self, sql, param=()): result = () # 返回的结果是一个元组 try: # 连接数据库 self.connect() # 执行SQL语句 self.cursor.execute(sql, param) # 获取查询的内容 result = self.cursor.fetchone() # 提交数据库事务处理 self.conn.commit() except Exception as e: # 如果出现错误就回滚 print(e) self.conn.rollback() # 关闭数据库连接 self.close()

浙公网安备 33010602011771号