数据库
Python操作MySQL数据库:完全指南
一、Python操作MySQL数据库:完全指南
Python操作MySQL数据库指南
Python是一门功能强大的编程语言,不仅可以完成各种任务,还具备与多种数据库进行交互的能力。其中,与MySQL数据库的连接是其中的一个重要应用场景。本文将为您提供详细的Python链接MySQL数据库的指南。
为什么选择Python链接MySQL数据库
随着数据的快速增长,许多企业和开发者都在使用MySQL作为其首选数据库管理系统。而Python语言由于其简单易学、具备广泛的第三方库支持,成为了许多开发者操作数据库的首选。通过Python链接MySQL数据库,您可以轻松地进行数据的增删改查操作,并能够通过Python的强大功能进行数据处理和分析。
安装Python MySQL 驱动程序
在开始之前,您需要安装Python MySQL驱动程序。目前,Python提供了多个MySQL驱动程序,如MySQL Connector/Python、PyMySQL等。您可以根据自己的需求选择适合的驱动程序,并使用pip命令进行安装。
连接到MySQL数据库
在Python中,连接到MySQL数据库需要使用到MySQL Connector/Python模块或PyMySQL模块。通过导入相应的模块,您可以使用连接字符串和相关参数来连接到MySQL数据库。之后,您可以使用该连接执行SQL语句和操作数据库。
执行SQL语句
一旦您成功连接到MySQL数据库,您就可以执行各种SQL语句来操作数据库。无论是创建表、插入数据、更新记录、删除数据,还是查询数据,Python都提供了相应的方法和函数供您使用。通过使用MySQL Connector/Python或PyMySQL模块提供的函数,您可以轻松地执行SQL语句并获取结果。
处理查询结果
当您执行查询操作时,数据库会返回一些结果。这些结果通常以表格形式返回,您可以通过Python提供的方法将其转化为易于处理和分析的数据结构,比如列表或字典。根据您的需求,您可以使用Python进行进一步的数据处理、分析和可视化。
关闭数据库连接
在您完成对数据库的操作后,为了释放资源并确保数据的完整性,您应该及时关闭数据库连接。通过调用相应的函数或方法,您可以关闭MySQL数据库连接,并确保您的代码在执行完毕后不再与数据库保持连接。
通过本文所提供的Python链接MySQL数据库的指南,您将掌握如何使用Python操作MySQL数据库。无论是日常的数据处理需求,还是开发大型应用程序,Python都可以帮助您轻松地与MySQL数据库进行交互。如果您希望深入了解更多操作和技巧,请参考官方文档或相关教程。
感谢您阅读本文,希望这篇指南能帮助您快速上手Python链接MySQL数据库,提升您的开发效率和数据处理能力。
二、如何使用Python操作MySQL数据库
Python是一种简单易学且功能强大的编程语言,它提供了许多库和模块,可以轻松地操作各种数据库。在这篇文章中,我们将学习如何使用Python来连接和操作MySQL数据库。
安装MySQL驱动
在开始之前,我们需要先安装Python的MySQL驱动程序。Python有几个MySQL驱动可供选择,其中最受欢迎且广泛使用的是mysql-connector-python。
您可以使用以下命令来安装它:
pip install mysql-connector-python
连接到MySQL数据库
在使用Python操作MySQL数据库之前,我们首先需要连接到数据库。使用mysql-connector-python库,我们可以使用以下代码创建一个数据库连接:
import mysql.connector
# 创建数据库连接
cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database')
# 关闭数据库连接
cnx.close()
执行SQL查询
连接到MySQL数据库后,我们可以执行各种SQL查询。下面是一个示例,演示如何执行简单的SELECT查询:
import mysql.connector
cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database')
cursor = cnx.cursor()
# 执行SELECT查询
query = "SELECT * FROM your_table"
cursor.execute(query)
# 获取查询结果
result = cursor.fetchall()
# 打印结果
for row in result:
print(row)
# 关闭数据库连接
cnx.close()
执行SQL插入、更新和删除
除了SELECT查询,我们还可以使用Python执行SQL插入、更新和删除操作。以下是一些示例:
import mysql.connector
cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database')
cursor = cnx.cursor()
# 执行插入操作
insert_query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
data = ("value1", "value2")
cursor.execute(insert_query, data)
cnx.commit()
# 执行更新操作
update_query = "UPDATE your_table SET column1 = %s WHERE column2 = %s"
data = ("new_value", "value2")
cursor.execute(update_query, data)
cnx.commit()
# 执行删除操作
delete_query = "DELETE FROM your_table WHERE column1 = %s"
data = ("value1", )
cursor.execute(delete_query, data)
cnx.commit()
# 关闭数据库连接
cnx.close()
错误处理
在使用Python操作MySQL数据库时,可能会遇到一些错误。为了避免应用程序崩溃,我们应该实施适当的错误处理。以下是一个示例:
import mysql.connector
try:
cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database')
# 执行操作...
except mysql.connector.Error as err:
print("发生错误:", err)
finally:
cnx.close()
以上是使用Python操作MySQL数据库的一些基础知识。通过本文的学习,您将能够轻松地使用Python连接到MySQL数据库,并执行各种操作。希望本文对您有所帮助,谢谢!
三、如何使用Python操作MySQL数据库?
MySQL是一种流行的关系型数据库管理系统,而Python是一种简单易学的编程语言。结合这两者,可以实现强大的数据存储和处理功能。在本文中,我们将介绍如何使用Python来操作MySQL数据库,包括连接数据库、创建表、插入数据、查询和更新数据等操作。
连接MySQL数据库
要使用Python操作MySQL数据库,首先需要安装Python的MySQL驱动程序。常用的驱动包括mysql-connector-python、pymysql和MySQLdb。我们可以使用pip来安装这些驱动程序,比如:
pip install mysql-connector-python
安装好驱动程序之后,就可以使用Python代码来连接MySQL数据库。在代码中,需要指定数据库的主机、用户名、密码和数据库名等信息,如下所示:
import mysql.connector
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
# 输出数据库连接
print(mydb)
创建表
在连接好数据库之后,我们可以使用Python来创建新的表。通过执行SQL语句,可以在数据库中创建包含特定字段的表,示例代码如下:
# 使用cursor对象创建表
mycursor = mydb.cursor()
# 创建名为“customers”的表,包含id和name两个字段
mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255))")
插入数据
一旦表创建好,我们就可以使用Python来向表中插入数据。使用SQL INSERT语句,可以将数据插入到指定的表中,示例代码如下:
# 向“customers”表中插入一条数据
sql = "INSERT INTO customers (name) VALUES (%s)"
val = ("John")
mycursor.execute(sql, val)
# 提交数据到数据库
mydb.commit()
# 输出最后插入的数据的主键值
print("1 条记录已插入,ID:", mycursor.lastrowid)
查询和更新数据
除了插入数据,Python还可以用于查询和更新数据库中的数据。通过执行SELECT和UPDATE语句,可以实现从表中检索数据和更新数据的操作,示例代码如下:
# 查询“customers”表中的所有数据
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
# 更新“customers”表中ID为1的数据
sql = "UPDATE customers SET name = 'Peter' WHERE id = 1"
mycursor.execute(sql)
通过上述示例,我们可以看到,Python可以与MySQL数据库实现良好的集成,为开发人员提供了强大的数据处理能力。希望本文对你在使用Python操作MySQL数据库时有所帮助。
感谢阅读!
四、Python 操作 MySQL 数据库的实用技巧
作为一名专业的网站编辑,我很高兴能够为您撰写这篇关于Python 操作 MySQL 数据库的文章。在当今数据驱动的时代,掌握如何使用 Python 高效地管理 MySQL 数据库无疑是一项非常重要的技能。让我们一起探讨一下这个话题吧。
Python 连接 MySQL 数据库的基本步骤
要在 Python 中操作 MySQL 数据库,首先需要安装相应的数据库驱动程序。目前比较常用的有 mysql-connector-python 和 PyMySQL 两种。安装完成后,我们就可以开始编写连接数据库的代码了。基本步骤如下:
- 导入所需的模块
- 创建数据库连接
- 创建游标对象
- 执行 SQL 语句
- 提交更改并关闭连接
常见的 MySQL 操作
有了基本的连接步骤,我们就可以开始进行各种 MySQL 操作了。以下是一些常见的操作示例:
创建数据库和表
使用 cursor.execute()
方法执行 SQL 语句即可创建数据库和表。例如:
cursor.execute("CREATE DATABASE mydb")
cursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))")
插入、查询、更新和删除数据
同样使用 cursor.execute()
方法执行相应的 SQL 语句即可完成这些操作。例如:
# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ("John Doe", "john@example.com"))
# 查询数据
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:
print(row)
# 更新数据
cursor.execute("UPDATE users SET email = %s WHERE id = %s", ("newemail@example.com", 1))
# 删除数据
cursor.execute("DELETE FROM users WHERE id = %s", (1,))
事务处理
在某些情况下,我们需要确保一系列操作要么全部成功,要么全部失败。这就需要用到事务处理。在 Python 中,我们可以使用 connection.commit()
和 connection.rollback()
方法来提交或回滚事务。例如:
try:
# 执行一系列操作
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ("Jane Doe", "jane@example.com"))
cursor.execute("UPDATE users SET email = %s WHERE id = %s", ("newemail@example.com", 2))
connection.commit()
except:
connection.rollback()
错误处理
在操作数据库时,难免会遇到各种异常情况,比如连接失败、SQL 语句错误等。我们需要使用 try-except 块来捕获并处理这些异常,确保程序能够稳定运行。例如:
try:
connection = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydb"
)
# 执行其他操作
except mysql.connector.Error as err:
print("Something went wrong: {}".format(err))
总之,通过学习和掌握这些 Python 操作 MySQL 数据库的基本技巧,相信您一定能够轻松地完成各种数据库管理任务。如果您还有任何疑问,欢迎随时与我交流。祝您学习愉快!
五、Python连接和操作MySQL数据库
介绍
Python是一种流行的编程语言,广泛应用于各个领域。而MySQL是一种常见的关系型数据库,用于存储和管理数据。本文将介绍如何使用Python连接和操作MySQL数据库。
安装MySQL驱动
在开始之前,我们需要安装Python的MySQL驱动程序。常用的MySQL驱动有MySQL Connector/Python、PyMySQL等。你可以根据自己的需求选择合适的驱动安装。
连接MySQL数据库
使用Python连接MySQL数据库非常简单。首先,我们需要导入相应的模块,然后根据数据库的连接信息创建一个连接对象。
import mysql.connector
# 连接数据库
cnx = mysql.connector.connect(user='username', password='password',
host='localhost',
database='database_name')
在上面的代码中,需要替换username、password、localhost和database_name为你自己的信息。
执行SQL语句
一旦成功连接到MySQL数据库,我们就可以执行SQL语句了。可以使用Python的Cursor对象执行各种SQL语句,比如查询数据、插入、更新和删除等。
# 创建游标对象
cursor = cnx.cursor()
# 执行查询语句
query = "SELECT * FROM table_name"
cursor.execute(query)
# 获取查询结果
result = cursor.fetchall()
# 打印结果
for row in result:
print(row)
# 关闭游标
cursor.close()
在上面的代码中,需要将table_name替换为你要操作的具体表名。
关闭数据库连接
完成所有操作后,我们需要关闭数据库连接以释放资源。
# 关闭数据库连接
cnx.close()
总结
本文介绍了如何使用Python连接和操作MySQL数据库。首先,我们需要安装相应的MySQL驱动;然后,使用连接信息创建一个连接对象;接下来,可以使用游标对象执行各种SQL语句。最后,记得关闭数据库连接以释放资源。
Python连接和操作MySQL数据库是开发中常见的操作,掌握这些技巧将帮助你更好地处理数据。希望这篇文章对你有所帮助!
六、python操作查询mysql数据库,如何判断返回是否为空值?
通常我先检查 cam_row是否为空,然后再检查它的长度,如果长度与你预期的长度1不相符也不对。 加一句 if not cam_row:continue就可以了
七、python操作数据库?
python3操作mysql数据库步骤:
1.
connect()方法创建数据库的连接;
2.
通过获取到的数据库连接conn下的cursor()方法来创建游标;
3.
通过游标cur操作execute()方法写入纯sql语句,操作数据库。Python是编程语言,MySQL是数据库,它们是两种不同的技术;要想使Python操作MySQL数据库需要使用驱动。
八、Python连接MySQL数据库并进行数据操作
介绍
Python是一种高级编程语言,它提供了广泛的库和模块,使得与各种数据库进行交互变得非常容易。本文将介绍如何使用Python访问MySQL数据库,并进行常见的数据操作。
步骤
- 安装MySQL驱动程序
- 建立数据库连接
- 执行SQL语句
- 提交更改
在使用Python连接MySQL之前,需要先安装相应的MySQL驱动程序。目前最流行的MySQL驱动程序是MySQL Connector/Python,可以通过pip安装:
pip install mysql-connector-python
要访问MySQL数据库,首先需要建立与数据库的连接。可以使用MySQL Connector/Python提供的connect()
函数来建立连接:
import mysql.connector
# 建立数据库连接
cnx = mysql.connector.connect(user='用户名', password='密码', host='主机名', database='数据库名')
一旦建立了数据库连接,就可以执行SQL语句来进行数据操作。可以使用MySQL Connector/Python提供的cursor()
方法创建一个光标对象,然后使用execute()
方法执行SQL语句:
# 创建光标对象
cursor = cnx.cursor()
# 执行SQL语句
cursor.execute("SELECT * FROM 表名")
# 获取结果
result = cursor.fetchall()
# 输出结果
for row in result:
print(row)
# 关闭光标和数据库连接
cursor.close()
cnx.close()
如果对数据库进行了修改操作(如插入、更新、删除等),需要使用commit()
方法提交更改:
# 插入数据
cursor.execute("INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2)")
# 提交更改
cnx.commit()
总结
本文介绍了使用Python连接MySQL数据库的基本步骤,包括安装MySQL驱动程序、建立数据库连接、执行SQL语句和提交更改。通过Python访问MySQL数据库,可以方便地进行数据操作和管理。希望本文对你有所帮助!
九、Python连接MySQL数据库,实现数据读取与操作
Python连接MySQL数据库,实现数据读取与操作
Python是一种非常受欢迎的编程语言,它具有简洁、易学、功能强大等特点,在数据处理和分析领域得到了广泛应用。MySQL则是一种常用的关系型数据库管理系统,支持高性能的数据存储和查询。将Python与MySQL相结合,可以实现对数据库的读取、写入以及数据操作。
在本文中,我们将介绍如何使用Python连接MySQL数据库,并演示如何读取MySQL数据库中的数据。
安装MySQL驱动程序
在使用Python连接MySQL数据库之前,需要先安装相应的MySQL驱动程序。常用的MySQL驱动程序有多个选择,比如PyMySQL和mysql-connector-python等。这里我们以PyMySQL为例进行介绍。
可以通过以下命令使用pip安装PyMySQL:
pip install PyMySQL
连接MySQL数据库
在使用Python连接MySQL数据库之前,首先需要建立与数据库的连接。可以使用PyMySQL提供的connect()
函数来实现连接。需要提供MySQL的主机名、用户名、密码、数据库名等信息。
import pymysql
# 建立与数据库的连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='database_name'
)
执行SQL查询
建立数据库连接后,就可以执行SQL查询语句来读取数据库中的数据了。使用PyMySQL提供的cursor()
方法创建一个游标对象,然后通过游标对象的execute()
方法执行SQL查询语句,最后使用fetchall()
方法获取查询结果。
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询
sql = 'SELECT * FROM table_name'
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印查询结果
for row in results:
print(row)
# 关闭游标和数据库连接
cursor.close()
conn.close()
完整示例
下面是一个完整的示例,演示了如何使用Python连接MySQL数据库,并读取表中的数据:
import pymysql
# 建立与数据库的连接
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='database_name'
)
# 创建游标对象
cursor = conn.cursor()
# 执行SQL查询
sql = 'SELECT * FROM table_name'
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 打印查询结果
for row in results:
print(row)
# 关闭游标和数据库连接
cursor.close()
conn.close()
以上就是使用Python连接MySQL数据库,并实现数据读取的基本步骤。通过这篇文章,希望读者能够更好地理解如何在Python中读取MySQL数据库,并且能应用到实际项目中。
谢谢您的阅读!希望这篇文章对您有所帮助。
十、如何查看mysql数据库操作记录日志?
MySQL 8.0 重新定义了错误日志输出和过滤,改善了原来臃肿并且可读性很差的错误日志。比如增加了 JSON 输出,在原来的日志后面以序号以及 JSON 后缀的方式展示。比如我机器上的 MySQL 以 JSON 保存的错误日志 mysqld.log.00.json:[root@centos-ytt80 mysql80]# jq . mysqld.log.00.json{ "log_type": 1, "prio": 1, "err_code": 12592, "subsystem": "InnoDB", "msg": "Operating system error number 2 in a file operation.", "time": "2019-09-03T08:16:12.111808Z", "thread": 8, "err_symbol": "ER_IB_MSG_767", "SQL_state": "HY000", "label": "Error"}{ "log_type": 1, "prio": 1, "err_code": 12593, "subsystem": "InnoDB", "msg": "The error means the system cannot find the path specified.", "time": "2019-09-03T08:16:12.111915Z", "thread": 8, "err_symbol": "ER_IB_MSG_768", "SQL_state": "HY000", "label": "Error"}{ "log_type": 1, "prio": 1, "err_code": 12216, "subsystem": "InnoDB", "msg": "Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71", "time": "2019-09-03T08:16:12.111933Z", "thread": 8, "err_symbol": "ER_IB_MSG_391", "SQL_state": "HY000", "label": "Error"}以 JSON 输出错误日志后可读性和可操作性增强了许多。这里可以用 Linux 命令 jq 或者把这个字串 COPY 到其他解析 JSON 的工具方便处理。只想非常快速的拿出错误信息,忽略其他信息。[root@centos-ytt80 mysql80]# jq '.msg' mysqld.log.00.json"Operating system error number 2 in a file operation.""The error means the system cannot find the path specified.""Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71""Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.""Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue."使用 JSON 输出的前提是安装 JSON 输出部件。
INSTALL COMPONENT 'file://component_log_sink_json';
完了在设置变量 SET GLOBAL log_error_services = 'log_filter_internal; log_sink_json';
格式为:过滤规则;日志输出;[过滤规则]日志输出;查看安装好的部件mysql> select * from mysql.component;+--------------+--------------------+---------------------------------------+| component_id | component_group_id | component_urn |+--------------+--------------------+---------------------------------------+| 2 | 1 | file://component_log_sink_json |+--------------+--------------------+---------------------------------------+3 rows in set (0.00 sec)
现在设置 JSON 输出,输出到系统日志的同时输出到 JSON 格式日志。mysql> SET persist log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';Query OK, 0 rows affected (0.00 sec)
来测试一把。我之前已经把表 a 物理文件删掉了。mysql> select * from a;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`a`.
现在错误日志里有 5 条记录。
[root@centos-ytt80 mysql80]# tailf mysqld.log
2019-09-03T08:16:12.111808Z 8 [ERROR] [MY-012592] [InnoDB] Operating system error number 2 in a file operation.
2019-09-03T08:16:12.111915Z 8 [ERROR] [MY-012593] [InnoDB] The error means the system cannot find the path specified.
2019-09-03T08:16:12.111933Z 8 [ERROR] [MY-012216] [InnoDB] Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71
2019-09-03T08:16:12.112227Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
2019-09-03T08:16:14.902617Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
JSON 日志里也有 5 条记录。
[root@centos-ytt80 mysql80]# tailf mysqld.log.00.json
{ "log_type" : 1, "prio" : 1, "err_code" : 12592, "subsystem" : "InnoDB", "msg" : "Operating system error number 2 in a file operation.", "time" : "2019-09-03T08:16:12.111808Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_767", "SQL_state" : "HY000", "label" : "Error" }
{ "log_type" : 1, "prio" : 1, "err_code" : 12593, "subsystem" : "InnoDB", "msg" : "The error means the system cannot find the path specified.", "time" : "2019-09-03T08:16:12.111915Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_768", "SQL_state" : "HY000", "label" : "Error" }
{ "log_type" : 1, "prio" : 1, "err_code" : 12216, "subsystem" : "InnoDB", "msg" : "Cannot open datafile for read-only: './ytt2/a.ibd' OS error: 71", "time" : "2019-09-03T08:16:12.111933Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_391", "SQL_state" : "HY000", "label" : "Error" }
{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:16:12.112227Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "label" : "Warning" }
{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:16:14.902617Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "label" : "Warning" }
那可能有人就问了,这有啥意义呢?只是把格式变了,过滤的规则我看还是没变。那我们现在给第二条日志输出加过滤规则先把过滤日志的部件安装起来
INSTALL COMPONENT 'file://component_log_filter_dragnet';
mysql> SET persist log_error_services = 'log_filter_internal; log_sink_internal; log_filter_dragnet;log_sink_json';
Query OK, 0 rows affected (0.00 sec)
只保留 error,其余的一律过滤掉。SET GLOBAL dragnet.log_error_filter_rules = 'IF prio>=WARNING THEN drop.';
检索一张误删的表mysql> select * from a;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`a`.
查看错误日志和 JSON 错误日志发现错误日志里有一条 Warning,JSON 错误日志里的被过滤掉了。2019-09-03T08:22:32.978728Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`a` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
再举个例子,每 60 秒只允许记录一个 Warning 事件mysql> SET GLOBAL dragnet.log_error_filter_rules = 'IF prio==WARNING THEN throttle 1/60.';Query OK, 0 rows affected (0.00 sec)
多次执行mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.mysql> select * from b;ERROR 1812 (HY000): Tablespace is missing for table `ytt2`.`b`.
现在错误日志里有三条 warning 信息
2019-09-03T08:49:06.820635Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
2019-09-03T08:49:31.455907Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
2019-09-03T08:50:00.430867Z 8 [Warning] [MY-012049] [InnoDB] Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.
mysqld.log.00.json 只有一条{ "log_type" : 1, "prio" : 2, "err_code" : 12049, "subsystem" : "InnoDB", "msg" : "Cannot calculate statistics for table `ytt2`.`b` because the .ibd file is missing. Please refer to http://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting.html for how to resolve the issue.", "time" : "2019-09-03T08:49:06.820635Z", "thread" : 8, "err_symbol" : "ER_IB_MSG_224", "SQL_state" : "HY000", "and_n_more" : 3, "label" : "Warning" }
总结,我这里简单介绍了下 MySQL 8.0 的错误日志过滤以及 JSON 输出。MySQL 8.0 的component_log_filter_dragnet 部件过滤规则非常灵活,可以参考手册,根据它提供的语法写出自己的过滤掉的日志输出。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...