psycopg2.DataError:值太长,无法更改类型字符(50)

时间:2018-11-07 14:40:38

标签: python postgresql psycopg2

执行我的代码时,出现如下错误:

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")         
    ))

在我的Postgres数据库中,“ kodATC”列的列长度设置为(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 :(得分:0)

回溯显示element.getAttribute("kodATC"),因为那是cur.execute()调用的最后一行。但是可能是任何个值引起了错误。

打印其他属性的长度,以查看引起问题的原因。