数据库查询

I.导入pymsql:import pymysql [pip install pymsql]

II.数据库查询步骤

(1)连接数据库

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()  # 断开连接

注意:不能在数据库中直接创建对象,在不同测试类中直接调用【因为测试完成后,需要关闭测试库,影响连接状态】
需对类数据进行操作的,在调用类中创建对象,不可在被调用的类中创建对象

原文地址:https://www.cnblogs.com/kite123/p/13784970.html