#python #sql #postgresql #conditional-statements #exists
#питон #sql #postgresql #условные утверждения #существует
Вопрос:
Я новичок в Python, и хотя это кажется какой-то глупой ошибкой, но я не могу понять, что я делаю не так. Любые предложения или подсказки будут очень полезны. А также, если на этот вопрос уже был дан ответ раньше, пожалуйста, свяжите меня с этим.
Я пишу простой скрипт на python, который будет подключаться к базе данных. Теперь в этой базе данных я проверяю test_run
, существует ли эта таблица. Если он существует, просто выведите, что он существует, если нет, создайте таблицу.
# Connect to the Database Server, now with the created DB try: connection = psycopg2.connect(user="postgres", password="postgres", host="127.0.0.1", port="5432", database="dashboard") except (Exception, psycopg2.Error) as error: print("Connection not established", error) # Check if test_run Table Exists cursor = connection.cursor() if bool(cursor.execute("SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_name='test_run')")): print('test_run table exists. Moving On.') else: print('test_run does not exist. Creating the Table now.') cursor.execute("CREATE TABLE test_run (run_id serial PRIMARY KEY, date date, status varchar(255), " "total_time integer, project_name varchar(255));")
Теперь в БД test_run
присутствует таблица, и когда я запускаю SELECT EXISTS
команду, я получаю true
.
Теперь, когда я запускаю приведенный выше сценарий else
, выполняется условие, указывающее, что test_run
таблица не существует. Но в идеале if
условие должно выполняться, поскольку таблица действительно существует.
Ответ №1:
Тебе стоит попробовать это.
import psycopg2 # Connect to the Database Server, now with the created DB try: connection = psycopg2.connect(user="postgres", password="postgres", host="127.0.0.1", port="5432", database="dashboard") except (Exception, psycopg2.Error) as error: print("Connection not established", error) # Check if test_run Table Exists cursor = connection.cursor() cursor.execute("SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_name='test_run')") if bool(cursor.fetchone()[0]): print('test_run table exists. Moving On.') else: print('test_run does not exist. Creating the Table now.') cursor.execute("CREATE TABLE test_run (run_id serial PRIMARY KEY, date date, status varchar(255), " "total_time integer, project_name varchar(255));") connection.commit()
Комментарии:
1.
cursor.fetchone()[0]
сделал свое дело. Большое спасибо за вашу быструю помощь.