I.导入pymsql:import pymysql [pip install pymsql]
import pymysql # (1)连接数据库 # 方法1 db_config = {'host': 'xxxx', # 连接的MySQL主机,如果本机是“localhost" 'port' : 3306 , # 端口,默认3306,int型 'database':'xxx', # 数据库名称 'user': 'xxx', # 连接的用户名 'password' : 'xxx', # 密码 'charset' : 'utf8' # 编码方式,推荐使用utf8 } con = pymysql.connect(**db_config) # 方法2 con= pymysql.Connect( host = 'xxx', #连接ip port = 3306, #端口号 user = 'xxxx', #数据库用户名 passwd = 'xxxx', #数据库密码 db = 'xxx', #数据库名 charset = 'utf8' #设置了数据库的字符集 )
(2) 创建游标对象:用于执行SQL语句
cur = con.cursor()
(3)执行SQL语句
- 准备执行语句
query_sql = 'SELECT * FROM member WHERE reg_name = "小"'
- 查找结果
# 显示数据行数 res = cur.execute(query_sql) print('显示数据行数:',res) # 显示查找的第一条数据 res1 = cur.fetchone() print('显示查找的第一条数据:',res1) # 显示查找的所有内容 res2 =cur.fetchall() # fetchall:返回的是一个查询集(所有数据放在元组里) print('[元组形式]显示查找的所有内容:',res2) con.commit() # 增删改:执行完增删改的SQL语句之后,需要进行commit提交
(4)关闭
- 关闭游标
- 关闭连接
# 关闭游标 cur.close() # 关闭连接 con.close()
数据库查询完整代码:
import pymysql from com.myconf import conf # 配置文件对象 class MySql: def __init__(self): # (1)连接mysql数据库 self.con = pymysql.Connect( host= conf.get('mysql', 'host'), # 连接ip port=conf.getint('mysql', 'port'), # 端口号 user=conf.get('mysql', 'user'), # 数据库用户名 passwd=conf.get('mysql', 'passwd'), # 数据库密码 # db=conf.get('mysql', 'db'), # 数据库名 charset='utf8' # 设置了数据库的字符集 ) # (2)创建游标对象:用于执行SQL语句 self.cursor = self.con.cursor() # (3)执行SQL语句 def readone(self, sql): # 显示查找的第一条数据 self.con.commit() # 提交执行(执行完增删改数据后,需要提交) self.cursor.execute(sql) return self.cursor.fetchone() def readall(self, sql): # 显示查找的所有内容(元组形式) self.con.commit() self.cursor.execute(sql) return self.cursor.fetchall() def count(self, sql): self.con.commit() return self.cursor.execute(sql) def close(self): self.cursor.close() # 关闭游标对象 self.con.close() # 断开连接
注意:不能在数据库中直接创建对象,在不同测试类中直接调用【因为测试完成后,需要关闭测试库,影响连接状态】
需对类数据进行操作的,在调用类中创建对象,不可在被调用的类中创建对象