通过sqlalchemy获取数据库名列表、表名列表、表字段名列表

前些天有个小项目,每天自动将数据库的信息汇总上报,上报的信息有每个表的:名字、所在数据库、数据量、字段数量。其中获取数据量较为容易,通过select count(*) 即可,而数据库名、表名、字段数量则难以获取,经过一番搜索,解决方案如下:

>>> import sqlalchemy
>>> from impala.dbapi import connect

# 创建impala连接
>>> def conn():
    	return connect(host='xx.xx.xx.xx', 
                             	port=xxxx,
                             	database='xxxx',
                             	user='xxxx', password='xxx!',
                             	auth_mechanism='PLAIN')
>>> engine = sqlalchemy.create_engine('impala://', creator=conn)

# 获取数据库名列表
>>> insp = sqlalchemy.inspect(engine)
>>> insp.get_schema_names()
['database_name1', 'database_name2', 'database_name3', 'database_name4', ...]

# 获取表名列表
>>> engine.table_names()
['table_name1', 'table_name2', 'table_name3', 'table_name4', ...]

# 获取表字段列表
>>> md = sqlalchemy.MetaData()
>>> table = sqlalchemy.Table('table_name', md, autoload=True, autoload_with=engine)
>>> columns = table.c
>>> [c.name for c in columns]

你可能感兴趣的:(数据处理,Python,工具)