Создаю отношение
create table ПОТРЕБИТЕЛЬ (
ИДЕНТИФИКАТОР serial not null primary key,
НАЗВАНИЕ varchar(50) not null,
"АДРЕС ЖИТЕЛЬСТВА" varchar(255) not null,
"СКИДКА, %" smallint check ("СКИДКА, %" >= 0 and "СКИДКА, %" <= 100) not null
);
Затем пытаюсь заполнить таблицу, используя значения
insert into ПОТРЕБИТЕЛЬ (ИДЕНТИФИКАТОР, НАЗВАНИЕ, "АДРЕС ЖИТЕЛЬСТВА", "СКИДКА, %") values (001, "АО ВАРЯ", "Сормовский", 10);
insert into ПОТРЕБИТЕЛЬ (ИДЕНТИФИКАТОР, НАЗВАНИЕ, "АДРЕС ЖИТЕЛЬСТВА", "СКИДКА, %") values (002, "ГАЗ", "Автозаводский", 7);
insert into ПОТРЕБИТЕЛЬ (ИДЕНТИФИКАТОР, НАЗВАНИЕ, "АДРЕС ЖИТЕЛЬСТВА", "СКИДКА, %") values (003, "МП ВЕРА", "Канавинский", 5);
insert into ПОТРЕБИТЕЛЬ (ИДЕНТИФИКАТОР, НАЗВАНИЕ, "АДРЕС ЖИТЕЛЬСТВА", "СКИДКА, %") values (004, "МП", "Канавинский", 3);
insert into ПОТРЕБИТЕЛЬ (ИДЕНТИФИКАТОР, НАЗВАНИЕ, "АДРЕС ЖИТЕЛЬСТВА", "СКИДКА, %") values (005, "АО СТАЛЬ", "Советский", 0);
Возникает ошибка в каждой строчке, якобы столбец не существует, при этом это даже не столбцы а аргументы

Я все время сталкиваюсь с ошибкой «psycopg2.ProgrammingError: столбец» none «не существует».
Я прочитал документацию по psycopg2 и просмотрел однако другие сообщения об этой ошибке относятся к запросу вставки , а не запросу на обновление .
Мой код выглядит следующим образом: —
def send_to_sql(identity,list1,list2,list3):
userid = 30
Fixture_No = None
Home_Side_Score = None
Away_Side_Score = None
conn = psycopg2.connect("dbname='Euro2016' user='postgres' host='localhost' password='##passwordhere##'")
cur = conn.cursor()
cur.execute("""UPDATE "Predictions" SET userid = %r, "Fixture_No" = %r, "Home_Side_Score" = %r, "Away_Side_Score" = %r WHERE "Predictions"."userid" = %r AND "Predictions"."Fixture_No" = %r """ % (userid, Fixture_No, Home_Side_Score, Away_Side_Score, userid, Fixture_No))
conn.commit()
cur.close()
conn.close()
Этот код отлично работает, если баллы и номер приспособления, которые я пытаюсь передать, являются числами, но когда вводится None, код падает на его лицо. Кто-нибудь Спасите меня…
1 ответ
Лучший ответ
Используйте %s, а не %r. Чтобы проверить, что отправляется на сервер, используйте cursor. mogrify:
update = """
UPDATE "Predictions"
SET
userid = %s,
"Fixture_No" = %s,
"Home_Side_Score" = %s,
"Away_Side_Score" = %s
WHERE
"Predictions"."userid" = %s AND
"Predictions"."Fixture_No" = %s
"""
data = (userid, Fixture_No, Home_Side_Score, Away_Side_Score, userid, Fixture_No)
print cur.mogrify(update, data)
cur.execute(update, data)
Еще лучше использовать словарь для передачи данных:
update = """
UPDATE "Predictions"
SET
userid = %(userid)s,
"Fixture_No" = %(Fixture_no)s,
"Home_Side_Score" = %(Home_Side_Score)s,
"Away_Side_Score" = %(Away_Side_Score)s
WHERE
"Predictions"."userid" = %(userid)s AND
"Predictions"."Fixture_No" = %(Fixture_No)s
"""
data = dict (
userid = userid,
Fixture_No = Fixture_No,
Home_Side_Score = Home_Side_Score,
Away_Side_Score = Away_Side_Score
)
4
Clodoaldo Neto
23 Апр 2016 в 01:58
0
1
При попытке выполнить обновление или удаление строки выдается сообщение об отсутствии поля таблицы. Хотя оно есть. Что я делаю не так?
mgi@mgi-Linux:~$ sudo su postgres
[sudo] пароль для mgi:
postgres@mgi-Linux:/home/mgi$ psql
psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1))
Введите «help», чтобы получить справку.
postgres=# c megriv
psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1))
Вы подключены к базе данных «megriv» как пользователь «postgres».
megriv=# SELECT * FROM formanpa;
codForma | textForma
———-+——————
11 | Aaaaaaaaaaaaa
22 | Bbbbbbbb
33 | Cccccccccccccccc
(3 строки)
megriv=# UPDATE formanpa SET textForma = ‘B2b2b2b2b2′ WHERE codForma = ’22’;
ОШИБКА: столбец «codforma» не существует
СТРОКА 1: …PDATE formanpa SET textForma = ‘B2b2b2b2b2’ WHERE codForma =…
^
ПОДСКАЗКА: Возможно, предполагалась ссылка на столбец «formanpa.codForma».
megriv=# UPDATE formanpa SET textForma = ‘B2b2b2b2b2′ WHERE formanpa.codForma = ’22’;
ОШИБКА: столбец formanpa.codforma не существует
|
yoimelv 0 / 0 / 0 Регистрация: 16.01.2019 Сообщений: 12 |
||||||||||||
|
1 |
||||||||||||
|
08.10.2022, 21:58. Показов 1015. Ответов 4 Метки postgres sql, sql posrgre (Все метки)
Здравствуйте! Не получается объединить таблицы по внешнему ключу. PGadmin пишет: SQL state: 42703 Таблица hobby:
Таблица users:
Запрос, который не получается произвести:
__________________
0 |
|
4720 / 3928 / 994 Регистрация: 29.08.2013 Сообщений: 25,187 Записей в блоге: 3 |
|
|
08.10.2022, 22:57 |
2 |
|
а ткните пальцем где именно в таблице users колонка fk да и pk я не вижу
0 |
|
yoimelv 0 / 0 / 0 Регистрация: 16.01.2019 Сообщений: 12 |
||||||||
|
08.10.2022, 23:22 [ТС] |
3 |
|||||||
|
Честно говоря, не знаю. Делали задание в классе, там всё получилось, а вот дома — нет, ошибка где-то. Нужно было выполнить запрос:
В классе программа сама предложила дописать запрос в конце, поэтому как раз часть
так и не понял, просто не запомнил, что там написал.
0 |
|
Аватар 1419 / 887 / 339 Регистрация: 31.05.2012 Сообщений: 3,114 |
||||
|
09.10.2022, 09:13 |
4 |
|||
0 |
|
4720 / 3928 / 994 Регистрация: 29.08.2013 Сообщений: 25,187 Записей в блоге: 3 |
|
|
09.10.2022, 17:40 |
5 |
|
Делали задание в классе, там всё получилось так голову нужно включать
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
09.10.2022, 17:40 |
|
Помогаю со студенческими работами здесь DataGridView. Существует ли столбец?
База данных — столбец в таблице не существует Как проверить существует ли столбец в DGV
Существует ли в матрице строка или столбец палиндром
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 5 |

Ошибка — Не существует в пространстве имен, но оно существует!