Измените значение из вывода команды SQL, чтобы соответствовать синтаксису Python - PullRequest
0 голосов
/ 14 марта 2019

Итак, я новичок в области SQL, postgresql и управления базами данных, но мне нужна база данных для бот-диска, который я делаю.Я использую asyncpg для управления базой данных с python

Теперь, скажем, у меня есть команда, которую нужно найти, если имя пользователя уже существует в этой базе данных:

try:
            with open("creds.json", "r") as file:  
                creds = json.load(file)
            print("\n" + "Connecting to database")    
            host = creds["DB_HOST"]
            user = creds["DB_USER"]
            password = creds["DB_TOKEN"]
            database = creds["DB_NAME"]
            conn = await asyncpg.connect(host=host, user=user, password=password, database=database)
            print("\n"+ f"PostgreSQL conection to database stablished succesfully")
            exists = await conn.fetch('''
SELECT EXISTS (
SELECT 1 
FROM table 
WHERE username=($1)); 
''', str(discordusername#1234)) 
            await conn.close()  
            print("Query finished, connection to database closed")        
            print(exists)

Она либо возвращает Trueили False в этой форме [<Record exists=False>] or [<Record exists=True>], поэтому, чтобы проверить, является ли оно истинным или ложным, я должен преобразовать 'существующие' в строку, а затем сравнить его с [<Record exists=False>] or [<Record exists=False>] в виде строки:

if str(exists) == "[<Record exists=False>]":
    ...
elif str(exists) == "[<Record exists=True>]"
    ...

Есть ли в любом случае «преобразовать» [<Record exists=False>] в простое False и [<Record exists=False>] в простое True, что Python может непосредственно понять?

то же самое происходит при получении значения из таблицы, скажем, и int, которые имеютбыть адресованным таким же образом, возвращая, например,

[<Record rowname=5>]
...