TyperError:应为字符串或字节obj

2024-09-27 02:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码从HTML表中解析数据,然后将其导出到Oracle数据库。由于某些原因,在表上运行代码时,我有时会收到错误:

Traceback (most recent call last):
  File "Z:\Code\successfullest_html_code.py", line 122, in <module>
    cursor.executemany(sql_query, exported_data)
TypeError: expecting string or bytes object

在大多数表中,我的代码运行得很好,对于那些产生此错误的表,我只是手工输入。。但现在这些错误发生的频率越来越高。我只想知道为什么这只发生在某些表上,而不发生在其他表上,因为它们看起来都一样。在

我读过当你试图通过命令运行字符串(或字节对象)以外的东西时会产生这个错误。但是这些表几乎完全相同,所以我不明白为什么有时会产生这个错误。在

以下是我的代码;虽然您可以忽略大部分代码,但错误发生在cursor.executemany(sql_query, exported_data)行:

^{pr2}$

下面是它成功导出的表:

enter image description here

下面是一个失败的表:

enter image description here

以下是数据帧的打印输出(\n实际上根本不会扰乱导出):

Dataframe is:       AvailableQuota DatePosted        ID LiveWeightPounds    price  year
0         White Hake   \n4/15\n   \n002\n           50,000    $0.10  2015
1            GOM COD   \n3/23\n  \n1493\n            3,600    $0.60  2015
2         \nGreysole   \n3/23\n  \n1493\n            \n350  \n$1.25  2015
3            GBE COD   \n3/20\n  \n1878\n            1,113    $0.60  2015
4               Dabs   \n3/18\n  \n1043\n            3,000    $0.50  2015
5         \nGreysole   \n3/18\n  \n1043\n            \n700   \n$.85  2015
6           GOM HADD   \n3/13\n   \n011\n              790    $0.50  2015
7               Dabs   \n3/13\n   \n370\n            2,100     $.60  2015
8         \nGreySole   \n3/13\n   \n370\n          \n4,700   \n$.85  2015
9            GOM COD   \n3/13\n  \n1734\n            1,900    $0.90  2015
10        \nGOM HADD   \n3/13\n  \n1734\n          \n1,000  \n$1.00  2015
11        \nGreysole   \n3/13\n  \n1734\n          \n3,000  \n$1.50  2015
12            \nDabs   \n3/13\n  \n1734\n          \n2,700  \n$1.00  2015
13           GBW Cod   \n3/13\n   \n816\n           12,000    $0.40  2015
14            \nDabs   \n3/13\n   \n816\n          \n2,000  \n$0.60  2015
15        \nGreysole   \n3/13\n   \n816\n          \n2,000  \n$0.90  2015
16           GOM COD   \n3/13\n   \n373\n              300    $0.90  2015
17  \nGOM YellowTail   \n3/13\n   \n373\n          \n3,300  \n$0.20  2015
18        \nGOM Hadd   \n3/13\n   \n373\n          \n1,000  \n$0.50  2015
19          GOM Hadd   \n3/11\n   \n001\n             2500    $0.40  2015
20          GOM HADD    \n3/9\n   \n187\n            1,100    $0.50  2015
21       \nGreysole     \n3/9\n   \n187\n            \n900  \n$0.85  2015
22            \nDabs    \n3/9\n   \n187\n            \n450  \n$0.50  2015
23           GOM COD    \n3/5\n   \n255\n              500    $0.40  2015
24        \nGOM Hadd    \n3/5\n   \n255\n          \n1,000  \n$0.40  2015
25  \nGOM Yellowtail    \n3/5\n   \n255\n          \n3,000  \n$0.20  2015
26          Gom Hadd   \n2/12\n   \n485\n            5,800    $0.40  2015
27  \nGom Yellowtail   \n2/12\n   \n485\n           \n1100  \n$0.20  2015
28          GOM HADD   \n1/26\n   \n314\n              439    $1.50  2015
29  \nGOM Yellowtail   \n1/26\n   \n314\n          \n2,274  \n$0.25  2015
30          GOM HADD   \n1/26\n  \n1610\n            2,950    $0.70  2015
31               NaN   \n1/26\n  \n1610\n            \n500       \n  2015
32               NaN   \n1/26\n  \n1610\n          \n2,550  \n$0.25  2015
33    GOM Yellowtail   \n1/23\n   \n347\n            4,780    $0.25  2015
34    GOM Yellowtail   \n1/23\n   \n802\n            2,141    $0.25  2015
35              POLL   \n12/8\n  \n310B\n            65234    $0.01  2015
36             \nRED   \n12/8\n  \n310B\n          \n76610  \n$0.01  2015
37          \nSNE BB   \n12/8\n  \n310B\n           \n2121  \n$0.30  2015
38          \nGOM BB   \n12/8\n  \n310B\n           \n7285  \n$0.05  2015
39            GOM BB   \n5/29\n   \n588\n             9989    $0.10  2015
40          \nGOM YT   \n5/29\n   \n588\n           \n6172  \n$0.25  2015
41            \nPOLL   \n5/29\n   \n588\n          \n10314  \n$0.01  2015
42         \nREDFISH   \n5/29\n   \n588\n           \n2705  \n$0.01  2015

下面是(exported_data)的打印输出:

[('White Hake', '\n4/15\n', '\n002\n', '50,000', '$0.10', '2015'), ('GOM COD', '\n3/23\n', '\n1493\n', '3,600', '$0.60', '2015'), ('\nGreysole', '\n3/23\n', '\n1493\n', '\n350', '\n$1.25', '2015'), ('GBE COD', '\n3/20\n', '\n1878\n', '1,113', '$0.60', '2015'), ('Dabs', '\n3/18\n', '\n1043\n', '3,000', '$0.50', '2015'), ('\nGreysole', '\n3/18\n', '\n1043\n', '\n700', '\n$.85', '2015'), ('GOM HADD', '\n3/13\n', '\n011\n', '790', '$0.50', '2015'), ('Dabs', '\n3/13\n', '\n370\n', '2,100', '$.60', '2015'), ('\nGreySole', '\n3/13\n', '\n370\n', '\n4,700', '\n$.85', '2015'), ('GOM COD', '\n3/13\n', '\n1734\n', '1,900', '$0.90', '2015'), ('\nGOM HADD', '\n3/13\n', '\n1734\n', '\n1,000', '\n$1.00', '2015'), ('\nGreysole', '\n3/13\n', '\n1734\n', '\n3,000', '\n$1.50', '2015'), ('\nDabs', '\n3/13\n', '\n1734\n', '\n2,700', '\n$1.00', '2015'), ('GBW Cod', '\n3/13\n', '\n816\n', '12,000', '$0.40', '2015'), ('\nDabs', '\n3/13\n', '\n816\n', '\n2,000', '\n$0.60', '2015'), ('\nGreysole', '\n3/13\n', '\n816\n', '\n2,000', '\n$0.90', '2015'), ('GOM COD', '\n3/13\n', '\n373\n', '300', '$0.90', '2015'), ('\nGOM YellowTail', '\n3/13\n', '\n373\n', '\n3,300', '\n$0.20', '2015'), ('\nGOM Hadd', '\n3/13\n', '\n373\n', '\n1,000', '\n$0.50', '2015'), ('GOM Hadd', '\n3/11\n', '\n001\n', '2500', '$0.40', '2015'), ('GOM HADD', '\n3/9\n', '\n187\n', '1,100', '$0.50', '2015'), ('\nGreysole ', '\n3/9\n', '\n187\n', '\n900', '\n$0.85', '2015'), ('\nDabs', '\n3/9\n', '\n187\n', '\n450', '\n$0.50', '2015'), ('GOM COD', '\n3/5\n', '\n255\n', '500', '$0.40', '2015'), ('\nGOM Hadd', '\n3/5\n', '\n255\n', '\n1,000', '\n$0.40', '2015'), ('\nGOM Yellowtail', '\n3/5\n', '\n255\n', '\n3,000', '\n$0.20', '2015'), ('Gom Hadd', '\n2/12\n', '\n485\n', '5,800', '$0.40', '2015'), ('\nGom Yellowtail', '\n2/12\n', '\n485\n', '\n1100', '\n$0.20', '2015'), ('GOM HADD', '\n1/26\n', '\n314\n', '439', '$1.50', '2015'), ('\nGOM Yellowtail', '\n1/26\n', '\n314\n', '\n2,274', '\n$0.25', '2015'), ('GOM HADD', '\n1/26\n', '\n1610\n', '2,950', '$0.70', '2015'), (nan, '\n1/26\n', '\n1610\n', '\n500', '\n', '2015'), (nan, '\n1/26\n', '\n1610\n', '\n2,550', '\n$0.25', '2015'), ('GOM Yellowtail', '\n1/23\n', '\n347\n', '4,780', '$0.25', '2015'), ('GOM Yellowtail', '\n1/23\n', '\n802\n', '2,141', '$0.25', '2015'), ('POLL', '\n12/8\n', '\n310B\n', '65234', '$0.01', '2015'), ('\nRED', '\n12/8\n', '\n310B\n', '\n76610', '\n$0.01', '2015'), ('\nSNE BB', '\n12/8\n', '\n310B\n', '\n2121', '\n$0.30', '2015'), ('\nGOM BB', '\n12/8\n', '\n310B\n', '\n7285', '\n$0.05', '2015'), ('GOM BB', '\n5/29\n', '\n588\n', '9989', '$0.10', '2015'), ('\nGOM YT', '\n5/29\n', '\n588\n', '\n6172', '\n$0.25', '2015'), ('\nPOLL', '\n5/29\n', '\n588\n', '\n10314', '\n$0.01', '2015'), ('\nREDFISH', '\n5/29\n', '\n588\n', '\n2705', '\n$0.01', '2015')]

除此之外,我真的很困惑为什么错误发生在所有地方的那一行。。。cursor.executemany()只是从上面的行执行SQL查询,对吗?它适用于某些表,但在其他表上却失败了,我真的不知道为什么。任何帮助解释和解决这一点,谢谢。在


Tags: codn2n3n1n5n12gomyellowtail
1条回答
网友
1楼 · 发布于 2024-09-27 02:27:11
if len(Quota)<len(Weight):  #if Quota has less itmes extend with NaN
    lstnans= [np.nan]*(len(Weight)-len(Quota))
    Quota.extend(lstnans)

您有意将nans添加到列表中,以掩盖某些解析错误。根本原因在于建筑Quota。在

回答你的问题:

why should NaNs cause the export fail? My Oracle is set to allow Null in a cell so shouldn't it accept a NaN result?

^{pr2}$

nan不是None/Null

相关问题 更多 >

    热门问题