#python #postgresql #psycopg2
#python #postgresql #psycopg2
Вопрос:
Новичок в python, пытаюсь использовать psycopg2 для чтения Postgres
Я читаю из таблицы базы данных под названием deployment и пытаюсь обработать значение из таблицы с тремя полями id, Key и Value
import psycopg2
conn = psycopg2.connect(host="localhost",database=database, user=user, password=password)
cur = conn.cursor()
cur.execute("SELECT "Value" FROM deployment WHERE ("Key" = 'DUMPLOCATION')")
records = cur.fetchall()
print(json.dumps(records))
[["newdrive"]]
Я хочу, чтобы это было просто «newdrive», чтобы я мог выполнить сравнение строк в следующей строке, чтобы проверить, является ли это «newdrive» или нет
Я попробовал json.loads на выходе json.dumps, не сработало
>>> a=json.loads(json.dumps(records))
>>> print(a)
[['newdrive']]
I also tried to print just the records without json.dump
>>> print(records)
[('newdrive',)]
Ответ №1:
Результатом fetchall()
является последовательность кортежей. Вы можете перебирать последовательность и печатать первый элемент (индекс 0) каждого кортежа:
cur.execute("SELECT "Value" FROM deployment WHERE ("Key" = 'DUMPLOCATION')")
records = cur.fetchall()
for record in records:
print(record[0])
Или проще, если вы уверены, что запрос возвращает не более одной строки, используйте fetchone()
который выдает один кортеж, представляющий возвращаемую строку, например:
cur.execute("SELECT "Value" FROM deployment WHERE ("Key" = 'DUMPLOCATION')")
row = cur.fetchone()
if row: # check whether the query returned a row
print(row[0])