Я пытаюсь создать отдельный клиент PostgreSQL, используя модуль psycopg2. Система проста, она берет код SQL и выполняет его. Но я не смог справиться с этим, если вход неправильный синтаксис SQL или программа без кода SQL закрыта, даже если она должна быть в цикле while.
Я пробовал разные комбинации, кроме разных, другой типпока цикл контролирует. Но никогда не работал. Также я старался не использовать try, но это тоже не решало.
import psycopg2
try:
connection = psycopg2.connect(user='postgres', password='190899', host='127.0.0.1',
port='5432', database='test')
cursor = connection.cursor()
while(input != ""):
sqlcode = input("Enter SQL code:")
try:
cursor.execute(sqlcode)
except:
print("Invalid SQL syntax")
## fatcher takes sql outputs and output boolean variable controls while loop
## in order to print line by line I use fetchone()
fetcher = ""
output = True
while output:
fetcher = cursor.fetchone();
if fetcher != None:
print(fetcher)
else:
output = False
except (Exception, psycopg2.Error) as error :
print ("Error while connecting to PostgreSQL", error)
finally:
if(connection):
cursor.close()
connection.close()
print("PostgreSQL connection is closed.")
Вот так я получаю ошибки по текущему коду:
Enter SQL code:SELECT * FROM person WHERE first_name = "Samed"
Invalid SQL syntax
Error while connecting to PostgreSQL no results to fetch
PostgreSQL connection is closed.
и
Enter SQL code:DROP TABLE person
Traceback (most recent call last):
File "app.py", line 30, in <module>
fetcher = cursor.fetchone();
psycopg2.ProgrammingError: no results to fetch
Сообщения об ошибках меняются, когда я пробую разные коды или экземпляры, ноих пересечение в том, что они уходят из цикла while, хотя они не должны этого делать.
Примечание: я не продвинутый программист на py или sql, я просто пытаюсь научиться. Я не мог найти подобную проблему в stackoverflow, по крайней мере, с моим ограниченным знаком.