Python Скрипт для получения нескольких таблиц - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь написать сценарий python, чтобы получить счетчик некоторых таблиц для мониторинга, который немного похож на приведенный ниже код. Я пытаюсь получить вывод, такой как ниже, и пытался использовать python многомерных массивов, но безуспешно.

Ожидаемый выход :

('oltptransactions:', [(12L,)])
('oltpcases:', [(24L,)])

Script :

import psycopg2

# Connection with the DataBase
conn = psycopg2.connect(user = "appuser", database = "onedb", host = "192.168.1.1", port = "5432")
cursor = conn.cursor()

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

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

conn.close()

Токовый выход :

[root@pgenc python_scripts]# python multi_getrcount.py 
('Counts:', [(12L,)])
('Counts:', [(24L,)])

Любая помощь приветствуется.

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Я немного неохотно показываю этот путь, потому что лучшие практики рекомендуют никогда не создавать динамическую c SQL строку, но всегда использовать постоянную строку и параметры, но это один из случаев, когда вычисление строки git:

  • имя таблицы не может быть параметром в SQL
  • вход только от самой программы и полностью освоен

Возможный код:

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

for t in tables:
    cursor.execute(sql.format(t))
    result = cursor.fetchall()
    print("('", t, "':,", result, ")")
0 голосов
/ 19 февраля 2020

Я верю что-то, как показано ниже, Невозможно проверить код из-за проблемы с сертификатом.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...