Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Функция с sql запросом к таблице

Антон Наумов Ученик (136), на голосовании 2 года назад
Функция, позволяющая добавить телефон для существующего клиента.
import psycopg2



def create_db(conn):

cur = conn.cursor()

cur.execute("""CREATE TABLE IF NOT EXISTS customers(

client_id SERIAL UNIQUE,

first_name VARCHAR(40),

last_name VARCHAR(60),

email VARCHAR(60),

phones VARCHAR(12)

);""")

conn.commit()

def add_phone(conn, client_id, phone):

cur = conn.cursor()

cur.execute("""

INSERT INTO customers(client_id, phones) VALUES( %s, %s);

""", (client_id, phone))

conn.commit() # фиксируем в БД

Вызываю функцию

add_phone(conn, 3, '+79650449021')

Получаю ошибку:

psycopg2.errors.UniqueViolation: ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "customers_client_id_key"

DETAIL: Ключ "(client_id)=(3)" уже существует.

Как это можно исправить чтобы реализовать функцию
Голосование за лучший ответ
Аглая Шниц Искусственный Интеллект (145158) 2 года назад
SERIAL будет сам заполнять client_id
поэтому просто
INSERT INTO customers(phones) VALUES(%s);
Похожие вопросы