计算所有数据库中所有表中的所有行

时间:2018-12-27 07:34:39

标签: python mysql

以下脚本可以工作,但不提供行数。

我确实尝试在此处找到答案并尝试更改它,但是由于某些原因,大多数示例/答案都使用了特定的表/数据库。

正如问题中所提到的,我想在所有数据库/表上都这样做。

import MySQLdb
import json
import os,sys


serv = MySQLdb.connect(host="localhost", user="host")
result = {}
c = serv.cursor()
c.execute("SHOW DATABASES")
l = c.fetchall()
col_names = []
for db_name in l:
    name = db_name[0]
    c.execute("USE %s;" % name)
    c.execute("SHOW TABLE STATUS;")
    for desc in c.description:
        result.setdefault(desc[0], None)
        col_names.append(desc[0])
print(result) 

1 个答案:

答案 0 :(得分:0)

使用INFORMATION_SCHEMA元数据库获取所有数据库中所有表的行数。

import MySQLdb

serv = MySQLdb.connect(host="localhost", user="host", db="INFORMATION_SCHEMA")
c = serv.cursor()
c.execute("select table_schema, table_name, table_rows from tables")
l = c.fetchall()
print(l)

输出(已截断和重新格式化)

...
('mysql', 'slow_log', 2), 
('mysql', 'columns_priv', 0), 
('mysql', 'time_zone_transition_type', 0), 
('mysql', 'tables_priv', 0), 
('mysql', 'column_stats', 0), 
('mysql', 'func', 0), 
('mysql', 'innodb_index_stats', 2395), 
('mysql', 'innodb_table_stats', 423), 
('mysql', 'gtid_slave_pos', 0), 
('mysql', 'proc', 2), 
('mysql', 'time_zone_leap_second', 0), 
('mysql', 'db', 3), 
('mysql', 'help_topic', 508), 
...