Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以绕过TypeError来执行命令吗?_Python_Sql_Oracle_Pandas_Typeerror - Fatal编程技术网

Python 我可以绕过TypeError来执行命令吗?

Python 我可以绕过TypeError来执行命令吗?,python,sql,oracle,pandas,typeerror,Python,Sql,Oracle,Pandas,Typeerror,我正在尝试将数据帧导出到Oracle表中,并一直遇到错误 类型错误:应为字符串或字节对象 我希望能够忽略或绕过这个错误,以便导出我所拥有的。可能吗 这里有一个链接,我将详细解释我的整个问题:。老实说,我的数据看起来很完美,它的列数和行数都是正确的,它们都是相同的数据类型,我以前使用过这种精确的方法导出过数百个其他数据帧,我想绕过错误消息,以便导出到目前为止的数据帧 另外,由于它在游标.executemany(行)上失败,我决定研究该命令。以下是cx\u Oracle的文档。它声明: 如果为tru

我正在尝试将数据帧导出到Oracle表中,并一直遇到错误

类型错误:应为字符串或字节对象

我希望能够忽略或绕过这个错误,以便导出我所拥有的。可能吗

这里有一个链接,我将详细解释我的整个问题:。老实说,我的数据看起来很完美,它的列数和行数都是正确的,它们都是相同的数据类型,我以前使用过这种精确的方法导出过数百个其他数据帧,我想绕过错误消息,以便导出到目前为止的数据帧

另外,由于它在
游标.executemany(
行)上失败,我决定研究该命令。以下是
cx\u Oracle
的文档。它声明:

如果为true,则batcherrors参数在Oracle中启用批处理错误支持,并确保调用成功,即使一个或多个参数序列中发生异常。

因此,我将其设置为true作为cursor.executemany(sql\u查询,导出的数据,batcherrors=true),但它没有改变任何内容

这是我的相关代码:

df = pd.read_excel(file_path)


df = df.fillna(0)
df = df.ix[1:]


cursor = con.cursor()
exported_data = [tuple(x) for x in df.values]
#exported_data = [str(x) for x in df.values]
#print("exported_data:", exported_data)

sql_query = ("INSERT INTO FISHTABLE(date_posted, stock_id, species, pounds, advertised_price, email_year, email_month, email_day, sector_name, ask)" "VALUES(:1, :2, :3, :4, :5, :6, :7, :8, 'Sustainable Harvest Sector', '1')")

cursor.executemany(sql_query, exported_data)

con.commit() #commit to database

cursor.close()
con.close()
这是导出的数据的打印输出:

[('DATE','TRADE ID','AVAILABLE STOCK','AMOUNT','BUY PRICE','2013','4','16'),('04/02/13','130014','WINTER SNE','12000','TRADE IN RETURN FOR','2013','4','16'),(0,0,0,0,0,0,'HADDOCK GOM','2013','4','16'),(0,0,0,0,0,'WITCH OFFERS','2013','4','16'),('FY13配额–购买',0,0,0,0,'2013','4','16'),('DATE','TRADE ID','DESIRED STOCK','AMOUNT','BUY PRICE','2013','4','16'),('3/26/13','130006','COD GBE','ANY','OFFERS','2013','4','16'),('3/26/13','130007','COD GBW','ANY','OFFERS','2013','4','16'),',('3/26/13',130001',COD GOM',INQUIRE',1.5',2013',4',16'),('3/26/13',130009',冬季GB',任何',报价',2013',4',16'),('4/9/13',130013',冬季SNE',最高100000',0.3',2013',4',16'),('3/26/13',130010',冬季SNE',任何',报价',2013',4',16'),('3/26/13',130008,'YELLOWTAIL GB','ANY','OFFERS','2013','4','16'),('3/26/13',130011,'YELLOWTAIL GOM','ANY','GB股票交易-\nOFFERS','2013','4','16'),(1,0,0,0,'2013','4','16')。

我真的很想帮忙解决这个问题,因为我已经坚持了一个多星期了。谢谢。

如何处理错误取决于您自己。默认的Python行为是引发错误(因此您可以看到它)。当遇到错误时,执行将在该点停止,并执行您定义的错误处理例程。忽略错误将不会使方法成为光标。executemany将在停止的位置拾取,但不会处理错误。您可以在此处再次调用该方法(使用相同的参数),但这显然没有帮助,因为它只会再次产生相同的错误。


如何处理错误取决于您自己。默认的Python行为是引发错误(因此您可以看到它)。当遇到错误时,执行将在该点停止,并执行您定义的错误处理例程。忽略错误将不会使方法成为光标。executemany将在停止的位置拾取,但不会处理错误。您可以在此处再次调用该方法(具有相同的论点),但这显然没有帮助,因为它只会再次产生相同的错误。

请将相关代码段添加到此问题,而不是引用其他问题。请将相关代码段添加到此问题,而不是引用其他问题。您确实完美地回答了我的问题,但导出仍然失败s、 相信我,我已经把它分解成了最小和最具体的部分,我可以,但我无法理解。我尝试将
exported_data
a
str
而不是
tuple
,它仍然失败,我用0替换了
NaN
s,我将数据框中的所有值都更改为字符串,我已经确认了export to the table可用于简单的一个单词导出,以及更多。但我想即使绕过阻碍我的错误,也不允许导出。我会在答案中添加更多关于您的导出的信息。但没有考虑解决根本问题?您发布的
数据和
物种
值有时会变得麻木我想你不应该用
0
来填空,而应该用emtpy string
'
来填空。我真的认为这会解决这个问题,这是一个非常聪明的想法,考虑到错误
需要字符串或字节
。但这也没有解决它:(你确实很好地回答了我的问题,但导出仍然失败。相信我,我已经将其分解为最小和最具体的部分,我无法理解。我尝试将
导出的数据
a
str
而不是
元组
,它仍然失败,我用0替换了
NaN
s,我更改了将Dataframe中的值转换为字符串,我已经确认导出到表可以使用简单的一个字导出等。但是我想即使绕过阻碍我的错误,仍然不允许导出。我将在回答中添加有关您的体验的更多信息。但是没有考虑解决潜在问题?您的
数据_发布的
物种
值有时是数字,有时是字符串。我想你不应该用
0
来填补空白,而应该用emtpy string
。我真的认为
try:
    cursor.executemany(sql_query, exported_data)
except TypeError:
    pass # put your error handling code here, pass will ignore the error