1
錯誤使用熊貓的時候寫SQL到Oracle:類型錯誤:期待字符串,Unicode或緩衝區對象,同時試圖使用:錯誤編寫SQL到Oracle:類型錯誤:期待字符串,Unicode或緩衝區對象
熊貓v 0.15.2
SQLAlchemy的v 0.9.8
merged.to_sql('name_of_table', ora, schema='schema', if_exists='append', index=False)
這裏是我的引擎創建字符串:
ora = create_engine('oracle://name:[email protected]:1521/instance')
我曾在here on the site之前發過一個問題,但是在Joris的幫助下修復了這個問題。之後,它被糾正了一次,然後開始提示上面的錯誤。
我試過this issue,and this one,但無濟於事。
以下是完整的錯誤:夠
merged.to_sql('name_of_table', ora, schema='schema', if_exists='append', index=False)Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 966, in to_sql
dtype=dtype)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py", line 538, in to_sql
chunksize=chunksize, dtype=dtype)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py", line 1172, in to_sql
table.insert(chunksize)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py", line 717, in insert
self._execute_insert(conn, keys, chunk_iter)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py", line 692, in _execute_insert
conn.execute(self.insert_statement(), data)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 729, in execute
return meth(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement
compiled_sql, distilled_params
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 958, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1162, in _handle_dbapi_exception
util.reraise(*exc_info)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 928, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/oracle/cx_oracle.py", line 941, in do_executemany
cursor.executemany(statement, parameters)
TypeError: expecting string, unicode or buffer object
好笑的是,如果我把它寫在一個csv,然後讀取CSV回到一個新的數據幀,就開始寫爲Oracle。
例子:
merged.to_csv('name.csv', sep=',', index=False, dtype=object)
merged1 = pd.read_csv('name.csv', dtype=object)
然後,它會進一步得到,而是一個新的錯誤彈出: sqlalchemy.exc.DatabaseError:(DatabaseError)ORA-00932:不一致的數據類型:預期數量得到CLOB
任何幫助表示讚賞。謝謝!
您能顯示merged.info()和merged1.info()的輸出嗎?此外,你有NaN值嗎?如果您只嘗試附加數據框的第一行('merged.head()。to_sql(...)'),您是否也遇到同樣的問題?您也可以嘗試將'echo = True'傳遞給'create_engine'以獲得更詳細的輸出。 – joris 2015-02-25 13:10:04
@Joris,抱歉在這方面的長期拖延,但我明白了。我會在第二個帖子中回答我自己的問題。 – 2015-02-26 18:41:08
當然發佈你自己的答案,我對解決方案感興趣! – joris 2015-02-27 08:45:21