Я использую psycopg2 для получения размера базы данных PostgreSQL в Python3.
dbname = 'my_pg_database'
q = 'select pg_total_relation_size(%s);'
conn.cursor.execute(q, (dbname, ))
row = conn.cursor.fetchone()
print(str(row[0]))
Я также пробовал с тем же кодом, но переключая вторую строку:
q = 'select pg_total_relation_size((%s));'
И изменив вторую и третью строки:
dbname = 'my_pg_database'
q = 'select pg_total_relation_size({dbname});'.format(dbname=dbname)
conn.cursor.execute(q)
row = conn.cursor.fetchone()
print(str(row[0]))
Я всегда получаю одну и ту же синтаксическую ошибку, раньше у меня было много этой проблемы с другими запросами, но мне удалось справиться с этим, используя формат или другим способом, но не в этом случае. Кто-нибудь знает, почему?
ИЗМЕНИТЬ
Ошибки, которые я получаю:
С первым кодом:
psycopg2.ProgrammingError: отношение «my_pg_database» не существует LINE 1: select pg_total_relation_size («my_pg_database»);
Кстати, здесь есть своего рода стрелка, указывающая на первую цитату второй строки.
С третьим кодом:
psycopg2.ProgrammingError: столбец «my_pg_database» не существует LINE 1: выберите pg_total_relation_size (my_pg_database);
А здесь есть своего рода стрелка, указывающая на m my_pg_database второй строки.
Обратите внимание, что первая ошибка говорит об отношении, а вторая — о столбце.
print
— это функция в Python 3, аprint(things, you, want, to print)
неprint things you want to print
(обратите внимание на круглые скобки) - person Sean Vieira   schedule 22.05.2014