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)
使用 SHOW DATABASES
语句列出系统中的所有数据库
c = mydb.cursor()
c.execute("SHOW DATABASES")
for x in c:
print(x)
本文使用测试使用建立的数据库,你也可以参考文章先建立数据库: 一键 WordPress 博客安装脚本,同时也是 LNMP 套件
WordPress 存放文章的数据表名 wp_posts
,使用 SELECT
查询博客的文章
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()
方法, 将返回结果的第一行
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() 以来所有的变化在其他数据库连接上都是不可见的。如果你往数据库里写了数据,但是又查询不到,请检查是否忘记了调用这个方法。
相关推荐: 完整部署Cloudreve以及对接MySQL、离线下载
系统、软件需求 系统环境:以萌咖大佬(MoeClub)的Debian 10系统为演示,附萌咖Debian 10 一键DD代码(笔者SSH工具为WinSCP+Putty): bash <(wget –no-check-certificate -qO- ‘…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册