获取多表计数的Python脚本

获取多表计数的Python脚本,python,database,Python,Database,我正试图编写一个python脚本来获取一些用于监视的表的计数,这看起来有点像下面的代码。我试图获得如下输出,并尝试使用python多维数组,但没有任何运气 预期产出: 脚本: 电流输出: 感谢您的帮助 谢谢 我相信如下所示,由于证书问题,无法测试代码 sql = """SELECT 'oltptransactions', COUNT(id) FROM appuser.oltptransactions""" sql2 = """SELECT 'oltpcases', COUNT(id) FROM

我正试图编写一个python脚本来获取一些用于监视的表的计数,这看起来有点像下面的代码。我试图获得如下输出,并尝试使用python多维数组,但没有任何运气

预期产出:

脚本:

电流输出:

感谢您的帮助


谢谢

我相信如下所示,由于证书问题,无法测试代码

sql = """SELECT 'oltptransactions', COUNT(id) FROM appuser.oltptransactions"""
sql2 = """SELECT 'oltpcases', COUNT(id) FROM appuser.oltpcases"""

sqls = [sql,sql2]
for i in sqls:
    cursor.execute(i)
    for name, count in cursor:
        print ("")

Or

sql = """SELECT 'oltptransactions :'||COUNT(id) FROM appuser.oltptransactions"""
sql2 = """SELECT 'oltpcases :'||COUNT(id) FROM appuser.oltpcases"""

sqls = [sql,sql2]
for i in sqls:
    cursor.execute(i)
    result = cursor.fetchall()
    print(result)

我有点不愿意这样说,因为最佳实践建议永远不要构建动态SQL字符串,而是始终使用常量字符串和参数,但这是一个计算字符串是合法的用例:

表名不能是SQL中的参数 输入仅来自程序本身,完全掌握 可能代码:

sql = """SELECT count(*) from appuser.{}"""
tables = ['oltptransactions', 'oltpcases']

for t in tables:
    cursor.execute(sql.format(t))
    result = cursor.fetchall()
    print("('", t, "':,", result, ")")

是否要打印表名而不是打印语句中的关键字“Counts”?如果要将计数与表名一起打印,则必须修改select语句并包括表名。cursor.fetachall以元组的形式返回每一行的列表,因此不使用fetchall,而是迭代每一行并格式化print语句。例如,对于name,countin cursor:Print thanking,@Serge Ballesta,我喜欢table name数组,并且更喜欢它,而不是在变量中硬编码SELECT语句。我修改了脚本以包含此更改,但遇到错误。当谷歌搜索sql.formattable`回溯最近的调用last:cursor.executesql.formattable name中的文件a.py,第12行时,有很多对panda的引用错误:名称'table'不是defined@ribbit:我的坏。。。我写了t和表格的格式:-现在已修复…谢谢!这就成功了,谢谢你的帮助。[root@pgencpython_scripts]python a.py、'oltptransactions'、':、[12L、]、'、'oltpcases'、':、[24L、],
[root@pgenc python_scripts]# python multi_getrcount.py 
('Counts:', [(12L,)])
('Counts:', [(24L,)])
sql = """SELECT 'oltptransactions', COUNT(id) FROM appuser.oltptransactions"""
sql2 = """SELECT 'oltpcases', COUNT(id) FROM appuser.oltpcases"""

sqls = [sql,sql2]
for i in sqls:
    cursor.execute(i)
    for name, count in cursor:
        print ("")

Or

sql = """SELECT 'oltptransactions :'||COUNT(id) FROM appuser.oltptransactions"""
sql2 = """SELECT 'oltpcases :'||COUNT(id) FROM appuser.oltpcases"""

sqls = [sql,sql2]
for i in sqls:
    cursor.execute(i)
    result = cursor.fetchall()
    print(result)
sql = """SELECT count(*) from appuser.{}"""
tables = ['oltptransactions', 'oltpcases']

for t in tables:
    cursor.execute(sql.format(t))
    result = cursor.fetchall()
    print("('", t, "':,", result, ")")