Python 的子进程删除 Mysql 列和间距

标签 python mysql bash subprocess

具体来说,我正在使用:

Python 2.4.3 (#1, May 24 2008, 13:47:28) 
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2

我正在尝试获取带有列名和边框的 mysql 查询的原始结果。这是在 bash 中运行的原始命令:

[root@machine ~]# mysql -u root -e 'show databases;'
+--------------------+
| Database           |
+--------------------+
| dbA                |
| dbB                |
| dbC                |
+--------------------+

我无法将此值存储到 Python 中的变量中:

import subprocess

cmd_array = ["mysql", "-u", "root", "-e", "show databases"]

p = subprocess.Popen(cmd_array)
raw_data = p.communicate()[0]

# Console outputs:
# +--------------------+
# | Database           |
# +--------------------+
# | dbA                |
# | dbB                |
# | dbC                |
# +--------------------+
#
# raw_data is None

p = subprocess.Popen(cmd_array, stdout=subprocess.PIPE)
rawData = p.communicate()[0]
print rawData

# Console outputs:
# Database
# dbA
# dbB
# dbC
#
# rawData is "Database\ndbA\ndbB\ndbC"

将 mysql 输出的 pretty-print 版本存储在 python 变量中的最佳方法是什么?

最佳答案

你需要使用-t:

p = check_output(["mysql" ,"-u" ," root", "-t" ,"-e",  'show databases;'])
print(p)

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| world              |
+--------------------+

您还可以使用check_output 来存储输出。

关于Python 的子进程删除 Mysql 列和间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29085175/

相关文章:

linux - Wget - 输出目录前缀

linux - 将一批文件连接到一个文件夹中

python - 如何从多类分类的混淆矩阵中提取 False Positive、False Negative

python - Unpickling 中流(python)

mysql - 如何在 MySQL 中对此进行优化?

MySQL:驱动程序从 5 更新到 8 后,LOAD DATA LOCAL INFILE 不起作用

php - 密码在 PHP 登录系统中不起作用

python - 通过混合列表和数据帧列,数组长度与索引长度不匹配

Python 绘制带有组的条形图

django - 如何使用 Gunicorn 查看 Django 错误的详细信息?