python—统计所有数据库中所有表中的所有行

nhn9ugyo  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(273)

下面的脚本可以工作,但不提供行计数。
我确实尝试在这里找到答案并尝试更改它,但由于某些原因,大多数示例/答案都使用特定的表/数据库。
正如问题中提到的,我希望在所有数据库/表上都这样做。

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)
afdcj2ne

afdcj2ne1#

使用 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), 
...

相关问题