psycopg2.DataError: значение слишком длинное для изменения типа символа (50) - PullRequest
0 голосов
/ 07 ноября 2018

При выполнении моего кода я получаю сообщение об ошибке:

File "c:/not/test/xmlDB.py", line 27, in <module>
element.getAttribute("kodATC")
psycopg2.DataError: value too long for type character varying(255)

Мой код на python:

for element in rc:
if element.getAttribute("rodzajPreparatu") == "ludzki":
    if len(element.getAttribute("kodATC")) > 50:
        print(len(element.getAttribute("kodATC")))
        print(element.getAttribute("kodATC"))
    cur.execute("INSERT INTO leki VALUES (%s, %s, %s, %s, %s, %s, %s, %s, 
    %s, %s)", 
    (element.getAttribute("id"), 
    element.getAttribute("nazwaProduktu"), 
    element.getAttribute("nazwaPowszechnieStosowana"),
    element.getAttribute("moc"),
    element.getAttribute("postac"),
    element.getAttribute("podmiotOdpowiedzialny"),
    element.getAttribute("typProcedury"),
    element.getAttribute("numerPozwolenia"),
    element.getAttribute("waznoscPozwolenia"),  
    element.getAttribute("kodATC")         
    ))

А длина столбца столбца "kodATC" в моей базе данных Postgres установлена ​​на (255).

Часть, которая печатает значение и длину, печатает следующий вывод:

63
V01AA05;V01AA02;V01AA04;V01AA11;V01AA20;V01AA10;V01AA08;V01AA01

Таким образом, его явно не больше, чем (255). Однако, когда я выполняю следующий запрос в pgAdmin, он работает просто отлично:

INSERT INTO public.leki VALUES (100085341,'Novo-Helisen Depot','Wyciągi 
alergenowe roztoczy kurzu domowego','-','zawiesina do wstrzykiwań','Allergopharma GmbH & Co. KG','NAR','00011','Bezterminowy','V01AA05;V01AA02;V01AA04;V01AA11;V01AA20;V01AA10;V01AA08;V01AA01');

1 Ответ

0 голосов
/ 07 ноября 2018

В трассировке отображается element.getAttribute("kodATC"), потому что это последняя строка вызова cur.execute(). Но это может быть любое значений, вызывающих ошибки.

Напечатайте длину других атрибутов, чтобы увидеть, какой из них вызывает проблему.

...