执行我的代码时,出现如下错误:
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');
答案 0 :(得分:0)
回溯显示element.getAttribute("kodATC")
,因为那是cur.execute()
调用的最后一行。但是可能是任何个值引起了错误。
打印其他属性的长度,以查看引起问题的原因。