兰雅sRGB 个人笔记 https://262235.xyz

Python安装 MySQL Connector 驱动程序,访问 MySQL 数据库和查询修改 WordPress 博客文章

mysql.webp

MySQL 是最受欢迎的数据库之一,Python 需要 MySQL 驱动程序来访问 MySQL 数据库

在本教程中,将使用驱动程序 "MySQL Connector",建议您使用 PIP 安装 "MySQL Connector"

安装 MySQL 驱动程序 mysql-connector

pip install mysql-connector

如果国内网速慢,可以pip 指定国内源安装: -i URL ,这里指定清华源

pip install mysql-connector \
  -i https://pypi.tuna.tsinghua.edu.cn/simple/

测试 MySQL Connector, 使用内置函数 dir() 用于查找 mysql.connector 模块定义的名称

import mysql.connector

如果执行上述代码没有错误,则 "MySQL Connector" 已安装并待用。

>>> dir(mysql.connector)
['BINARY', 'Binary', 'CharacterSet', 'ClientFlag', 'Connect', 'DATETIME', 'DataError', 'DatabaseError', 'Date', 'DateFromTicks', 'Error', 'FieldFlag', 'FieldType', 'HAVE_CEXT', 'IntegrityError', 'InterfaceError', 'InternalError', 'MySQLConnection', 'NUMBER', 'NotSupportedError', 'OperationalError', 'PoolError', 'ProgrammingError', 'ROWID', 'RefreshOption', 'STRING', 'Time', 'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'Warning', '_CONNECTION_POOLS', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '__version_info__','_get_failover_connection', '_get_pooled_connection', 'abstracts', 'apilevel', 'authentication', 'catch23', 'charsets', 'connect', 'connection', 'constants', 'conversion', 'cursor', 'custom_error_exception', 'custom_types', 'dbapi', 'errorcode', 'errors', 'locales', 'network', 'optionfiles', 'paramstyle', 'protocol', 'read_option_files', 'threadsafety', 'utils', 'version']

首先创建与 MySql数据库的连接

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="yourpassword"
)

print(mydb)

python-mysql.png

使用 SHOW DATABASES 语句列出系统中的所有数据库

c = mydb.cursor()
c.execute("SHOW DATABASES")
for x in c:
  print(x)

本文使用测试使用建立的数据库,你也可以参考文章先建立数据库: 一键 WordPress 博客安装脚本,同时也是 LNMP 套件

WordPress 存放文章的数据表名 wp_posts,使用 SELECT 查询博客的文章

USE_SELECT.png

c = mydb.cursor()
c.execute("USE wordpress")
c.execute("SELECT * FROM wp_posts LIMIT 5")
result = c.fetchall()
for x in result:
  print(x)

选取列-只选择表中的某些列,请使用 "SELECT" 语句,后跟列名

>>> c.execute("SELECT ID, post_title, guid, post_type  FROM wp_posts LIMIT 5")
>>> result = c.fetchall()
>>> for x in result: print(x)
...
(1, '世界,大家好!', 'https://262235.xyz/wordpress/?p=1', 'post')
(2, '示例页面', 'https://262235.xyz/wordpress/?page_id=2', 'page')
(3, '隐私政策', 'https://262235.xyz/wordpress/?page_id=3', 'page')
(20, '自动草稿', 'https://262235.xyz/wordpress/?p=20', 'post')
(21, 'Nginx访问控制allow、deny(ngx_http_access_module)', 'https://262235.xyz/wordpress/?p=21', 'post')

fetchall() 方法,该方法从最后执行的语句中获取所有行, 使用 LIMIT 语句限制从查询返回的记录数

如果只需一行或者逐行,可以使用 fetchone() 方法, 将返回结果的第一行

getone.PNG

c.execute("SELECT ID, post_title, guid, post_type  FROM wp_posts LIMIT 5")
result = c.fetchone()
print(result)
result = c.fetchone();  print(result)

WordPress文章内容批量替换文字的方法

WordPress 存放文章的数据表名 wp_posts ,字段名称为 post_content

#  UPDATE wp_posts SET post_content = replace(post_content,'旧词语','新词语');
sql = "UPDATE wp_posts SET post_content = replace(post_content,'nginx','nginx-php')"
c.execute(sql)
mydb.commit()
print(c.rowcount, "record(s) affected")
  • 更新表: 使用 UPDATE 语句来更新表中的现有记录
  • 重要:commit() 这个方法提交当前事务。如果没有调用这个方法,那么从上一次提交 commit() 以来所有的变化在其他数据库连接上都是不可见的。如果你往数据库里写了数据,但是又查询不到,请检查是否忘记了调用这个方法。
本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:兰雅sRGB 个人笔记 » Python安装 MySQL Connector 驱动程序,访问 MySQL 数据库和查询修改 WordPress 博客文章