создать таблицу с ошибкой psycopg2 - PullRequest
0 голосов
/ 09 июля 2020

Я делаю сценарий с python, каждый раз, когда он запускается, запускается fre sh, потому что я хочу убедиться, что удаляю базу данных и таблицу и воссоздаю их. я следовал этому руководству: https://www.fullstackpython.com/blog/postgresql-python-3-psycopg2-ubuntu-1604.html, но вместо этого матовый, как пользователь, делал osboxes, но когда я пытаюсь создать таблицу, я получаю ошибку, которая уже существует, как это может быть, если я ранее уронил база данных?

# connect to postgres
connection = psycopg2.connect(dbname="postgres", user="osboxes", password="osboxes.org", host="localhost")
connection.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cursor = connection.cursor()
# create database to work on
name_database = "image_comparation"
cursor.execute("DROP DATABASE IF EXISTS {0};".format(name_database))
cursor.execute("CREATE DATABASE {0};".format(name_database))

name_table = "IMAGES"    
cursor.execute("DROP TABLE IF EXISTS {0};".format(name_table))

# here is the issue,  never creates the table
try:
    # cursor.execute("DROP TABLE IF EXISTS {0};".format(name_table))
    create_table_query = """CREATE TABLE {0} (IMAGE_PATH TEXT NOT NULL, IN_PROGRESS BOOLEAN, COMPLETED BOOLEAN, TIME_PROCESS REAL, CREATED_TIME timestamp, MATCHES TEXT NULL, MOVED BOOLEAN);""".format(name_table)
    cursor.execute(create_table_query)
    connection.commit()
except psycopg2.DatabaseError as e:
    print(f'Error {e}')

Связь с ошибкой «изображения» уже существует

работает первый раз, когда я запускаю скрипты после этого скажите мне, что все отношения уже существуют, поэтому я предполагаю, что таблица каким-то образом сохранилась, поэтому я проверил в cmd

psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.2 (Ubuntu 12.2-4))
Type "help" for help.

image_db=> \dt
Did not find any relations.
image_db=> 

, затем я вручную скопирую запрос создания таблицы в psql и работает хорошо. я что-то упускаю?

1 Ответ

0 голосов
/ 11 июля 2020

вы входите в базу данных по умолчанию 'postgres', думайте, что это основная база данных, которая содержит информацию обо всем остальном, что происходит в postgre, затем вы создаете новую базу данных, но вам нужно создать другое соединение к этой базе, чтобы переключиться на нее, прямо сейчас вы создаете таблицу в «главной» базе данных, добавляете

connection = psycopg2.connect(dbname="image_comparation", user="osboxes", password="osboxes.org", host="localhost")

для переключения на эту базу данных, а затем создаете сказку.

...