mysql.connector库

发布于:2024-07-26 ⋅ 阅读:(197) ⋅ 点赞:(0)

mysql-connector-python 和 PyMySQL的区别

mysql-connector-python 和 PyMySQL 都是 Python 语言中用于连接和操作 MySQL 数据库的库。它们之间有一些关键的区别:

  1. 起源和兼容性

    • mysql-connector-python 是 MySQL 官方提供的连接器,完全支持 MySQL 协议。
    • PyMySQL 是一个第三方库,旨在替代 mysql-python(也称为 MySQLdb),后者不再维护。PyMySQL 与 mysql-python 的 API 高度兼容。
  2. 性能

    • 在性能方面,两者差异不大,但 mysql-connector-python 由于是官方支持,可能会针对 MySQL 的最新特性进行优化。
  3. 安装和使用

    • mysql-connector-python 可以通过 pip 安装,但需要额外依赖。
    • PyMySQL 同样可以通过 pip 安装,且通常没有额外的依赖。
  4. 特性支持

    • mysql-connector-python 支持更多 MySQL 的高级特性,如预处理语句、事务处理等。
    • PyMySQL 也支持这些特性,但可能对新特性的支持稍有延迟。
  5. 社区和文档

    • mysql-connector-python 作为官方库,有较好的文档支持和社区。
    • PyMySQL 虽然是第三方库,但由于其广泛使用,也有一个活跃的社区和良好的文档。
  6. Unicode 支持

    • mysql-connector-python 对 Unicode 有更好的支持。
    • PyMySQL 也支持 Unicode,但在某些情况下可能需要额外的配置。

 

mysql-connector-python 中常用的主要类和方法

1. mysql.connector.connect()

用于创建数据库连接。

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="your_password",
    database="your_database"
)

2. mysql.connector.connect() 参数

  • host:数据库主机地址。
  • user:用户名。
  • password:用户密码。
  • database:要连接的数据库名称。
  • port:数据库端口号(默认为3306)。
  • autocommit:是否自动提交事务(默认为False)。
  • charset:字符集(如 "utf8mb4")。
  • pool_namepool_size:连接池名称和大小(用于连接池)。

3. mysql.connector.connect() 返回值

返回一个 MySQLConnection 对象。

4. MySQLConnection.cursor()

创建一个游标对象,用于执行 SQL 查询和获取结果。

cursor = conn.cursor()

5. Cursor.execute(query, params=None)

执行单条 SQL 语句。

  • query:SQL 语句。
  • params:SQL 语句参数(可选)。
cursor.execute("SELECT * FROM table_name WHERE column_name = %s", (value,))

6. Cursor.executemany(query, param_list)

执行多条 SQL 语句。

  • query:SQL 语句。
  • param_list:参数列表。
query = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)"
data = [(value1, value2), (value3, value4)]
cursor.executemany(query, data)

7. Cursor.fetchall()

获取所有结果行。

results = cursor.fetchall()

8. Cursor.fetchone()

获取下一行结果。

result = cursor.fetchone()

9. Cursor.fetchmany(size)

获取指定数量的结果行。

  • size:要获取的行数。
results = cursor.fetchmany(size=10)

10. MySQLConnection.commit()

提交当前事务。

conn.commit()

11. MySQLConnection.rollback()

回滚当前事务。

conn.rollback()

12. MySQLConnection.close()

关闭数据库连接。

conn.close()

13. Cursor.close()

关闭游标对象。

cursor.close()

14. mysql.connector.Error

用于捕捉和处理数据库相关的错误。

import mysql.connector

try:
    conn = mysql.connector.connect(
        host="localhost",
        user="root",
        password="wrong_password"
    )
except mysql.connector.Error as err:
    print(f"Error: {err}")

15. mysql.connector.pooling

用于创建和管理连接池。

from mysql.connector import pooling

dbconfig = {
    "host": "localhost",
    "user": "root",
    "password": "your_password",
    "database": "your_database"
}

pool = pooling.MySQLConnectionPool(pool_name="mypool",
                                    pool_size=5,
                                    **dbconfig)

conn = pool.get_connection()

16. MySQLConnection.set_charset_collation(charset)

设置字符集和排序规则。

conn.set_charset_collation("utf8mb4")

17. MySQLConnection.is_connected()

检查是否与数据库的连接仍然有效。

if conn.is_connected():
    print("Connected")

18. Cursor.nextset()

跳过当前结果集,并移动到下一个结果集(如果有)。

cursor.nextset()


网站公告

今日签到

点亮在社区的每一天
去签到