Вставка в таблицу с последовательным столбцом с помощью psycopg2 - PullRequest
0 голосов
/ 21 октября 2019

У меня есть две простые таблицы в PostgreSQL, которые я создал с помощью pgAdmin4:

Table1:

CREATE TABLE public.table1
(
    id serial,
    name text,
    PRIMARY KEY (id)
)

Table2:

CREATE TABLE public.table2
(
    fk_id integer,
    name text,
    PRIMARY KEY (name),
    CONSTRAINT fk FOREIGN KEY (fk_id)
        REFERENCES public.table1 (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

После создания этой второй таблицы свнешний ключ, ссылающийся на первую таблицу, идентификатор типа данных из таблицы1 автоматически меняется на целое:

image

И если я пытаюсь вручную изменить тип на последовательный, он не будет найден.

А также с помощью psycopg2 эта вставка работает:

connection = psycopg2.connect(user = "user",
                              password = "pass",
                              host = "localhost",
                              port = "5432",
                              database = "db")

cursor = connection.cursor()

postgres_insert_query = """INSERT INTO table1 (id,name) VALUES (%s,%s)"""
record_to_insert = (1,'sometext')
cursor.execute(postgres_insert_query, record_to_insert)

connection.commit()

Но эта ошибка не получается:

postgres_insert_query = """INSERT INTO table1 (name) VALUES (%s)"""
record_to_insert = ('sometext')

Печать этой ошибки: «не все аргументы преобразованы во время форматирования строки»

1 Ответ

0 голосов
/ 21 октября 2019

Я просто пропустил запятую, как прокомментировал @ Джереми

record_to_insert = ('sometext',)
...