ProgrammingError: (psycopg2.ProgrammingError) отсутствует запись FROM-clause для table & ldquo; artist & rdquo; LINE 1: SELECT year, artist.inverted, track FROM billboard [дубликат]

Если мы рассмотрим общие сценарии, в которых может быть выбрано это исключение, доступ к свойствам с объектом вверху.

Пример:

string postalcode=Customer.Address.PostalCode; 
//if customer or address is null , this will through exeption

здесь, если адрес имеет значение null, то вы получите NullReferenceException.

Итак, в качестве практики мы всегда должны использовать проверку нуля, прежде чем обращаться к свойствам в таких объектах (особенно в общих)

string postalcode=Customer?.Address?.PostalCode;
//if customer or address is null , this will return null, without through a exception
85
задан shybovycha 4 October 2011 в 17:58
поделиться

1 ответ

Просто заключите year в двойные кавычки, чтобы он не интерпретировался как ключевое слово :

INSERT INTO table (id, name, "year") VALUES ( ... );

Из документации :

Существует второй тип идентификатора: идентификатор с разделителями или цитируемый идентификатор. Он формируется путем включения произвольной последовательности символов в двойных кавычках («). Обозначенный идентификатор всегда является идентификатором, никогда не ключевым словом. Таким образом,« select »может использоваться для ссылки на столбец или таблицу с именем« select », тогда как некорректный выбор будет приниматься как ключевое слово и поэтому будет провоцировать ошибку синтаксического анализа при использовании там, где ожидается имя таблицы или столбца.

134
ответ дан a_horse_with_no_name 27 August 2018 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: