【5.0】基础串联之pymysql

发布时间 2023-07-26 10:45:27作者: Chimengmeng

【一】pymysql简解

  • pymysql 是一个用于 Python 的第三方模块,用于连接并操作 MySQL 数据库。
  • 它是 Python 官方提供的 MySQLdb 模块的一个替代方案,具有更好的兼容性和性能。

【二】使用方法

【1】安装 pymysql:

  • 可以通过 pip 命令进行安装:
pip install pymysql

【2】连接到数据库:

  • 在使用 pymysql 之前,需要先建立与 MySQL 数据库的连接。
  • 连接的方法如下所示:
import pymysql

# 建立连接
conn = pymysql.Connect(
    host='localhost',
    port=3306,
    user='username',
    password='password',
    db='database_name',
    charset='utf8'
)

【3】创建游标并执行 SQL 语句:

  • 在连接成功后,需要创建一个游标对象,用于执行 SQL 查询和操作。
  • 游标对象的创建方式如下:
# 创建游标对象
cursor = conn.cursor()

【3】执行 SQL 查询:

  • pymysql 提供了多个方法用于执行查询语句
    • execute()executemany() 等。
  • 执行查询语句的示例代码如下:
# 执行查询语句
cursor.execute("SELECT * FROM table_name")
# 获取查询结果
result = cursor.fetchall()

【4】执行 SQL 更新和操作:

  • 对于更新和操作类的 SQL 语句
    • 可以使用 execute() 方法执行。
  • 执行更新操作的示例代码如下:
# 执行更新操作
cursor.execute("UPDATE table_name SET column1='value' WHERE column2='condition'")
# 提交事务
conn.commit()

【5】关闭连接:

  • 在完成所有数据库操作后,需要关闭连接,释放资源。
  • 关闭连接的方法如下:
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

【三】封装成类

  • 当使用 pymysql 进行数据库操作时,可以通过类封装的方式来组织代码,提高代码的可复用性和可维护性。
  • 下面是一个示例,展示如何使用类封装 pymysql 的方法:
import pymysql

class MySQLHelper:
    def __init__(self, host, port, user, password, db, charset='utf8'):
        self.conn = pymysql.connect(
            host=host,
            port=port,
            user=user,
            password=password,
            db=db,
            charset=charset
        )
        self.cursor = self.conn.cursor()

    def execute_query(self, query):
        self.cursor.execute(query)
        result = self.cursor.fetchall()
        return result

    def execute_update(self, update):
        self.cursor.execute(update)
        self.conn.commit()

    def close(self):
        self.cursor.close()
        self.conn.close()
  • 上述代码定义了一个名为 MySQLHelper 的类

    • 该类具有连接数据库、执行查询、执行更新以及关闭连接等方法。
  • 在使用时

    • 可以先创建一个 MySQLHelper 对象
    • 并传入参数以建立与数据库的连接
    • 然后使用该对象调用相应的方法进行数据库操作。
    • 示例如下:
# 创建 MySQLHelper 对象
db_helper = MySQLHelper(
    host='localhost',
    port=3306,
    user='username',
    password='password',
    db='database_name',
    charset='utf8'
)

# 执行查询操作
result = db_helper.execute_query("SELECT * FROM table_name")
print(result)

# 执行更新操作
db_helper.execute_update("UPDATE table_name SET column1='value' WHERE column2='condition'")

# 关闭连接
db_helper.close()
  • 通过使用类进行封装,可以将数据库操作的逻辑集中在一个类中,提高代码的可读性和可维护性。
  • 同时,还可以对该类进行扩展,添加其他常用的数据库操作方法,以满足不同的业务需求。

【进阶方法】

【1】连接数据库:

  • __init__ 方法中使用 pymysql.connect() 方法连接到数据库。
def __init__(self, host, port, user, password, db, charset='utf8'):
    self.conn = pymysql.connect(
        host=host,
        port=port,
        user=user,
        password=password,
        db=db,
        charset=charset
    )
    self.cursor = self.conn.cursor()

【2】执行查询操作:

  • 使用 execute_query() 方法执行 SELECT 查询语句,并返回查询结果。
def execute_query(self, query):
    self.cursor.execute(query)
    result = self.cursor.fetchall()
    return result

【3】执行更新操作:

  • 使用 execute_update() 方法执行 INSERT、UPDATE 或 DELETE 操作,然后调用 commit() 方法提交更改。
def execute_update(self, update):
    self.cursor.execute(update)
    self.conn.commit()

【4】关闭连接:

  • 在类的 close() 方法中关闭游标和连接。
def close(self):
    self.cursor.close()
    self.conn.close()

【5】常用的 SQL 命令:

  • CREATE TABLE:创建表格。
  • SELECT:从数据库中检索数据。
  • INSERT INTO:将新记录插入到表中。
  • UPDATE:更新表中的数据。
  • DELETE FROM:从表中删除数据。

【6】集成类

class MySQLHelper:
    # ...

    def create_table(self, table_name, columns):
        query = f"CREATE TABLE {table_name} ({columns})"
        self.cursor.execute(query)
        self.conn.commit()

    def select(self, table_name, columns='*', condition=''):
        query = f"SELECT {columns} FROM {table_name}"
        if condition:
            query += f" WHERE {condition}"
        self.cursor.execute(query)
        result = self.cursor.fetchall()
        return result

    def insert(self, table_name, values):
        query = f"INSERT INTO {table_name} VALUES ({values})"
        self.cursor.execute(query)
        self.conn.commit()

    def update(self, table_name, set_values, condition):
        query = f"UPDATE {table_name} SET {set_values} WHERE {condition}"
        self.cursor.execute(query)
        self.conn.commit()

    def delete(self, table_name, condition):
        query = f"DELETE FROM {table_name} WHERE {condition}"
        self.cursor.execute(query)
        self.conn.commit()
  • 通过上述代码
    • 你可以使用 create_table() 方法来创建表
    • 使用 select() 方法来查询表中的数据
    • 使用 insert() 方法来插入新记录
    • 使用 update() 方法来更新表中的数据
    • 使用 delete() 方法来删除表中的数据。