[英]Insert panda df to Oracle database using python
我有一個帶有文本列('testdf')的熊貓數據框。 我正在使用下面的代碼插入到 oracle 數據庫中的 TEST 表
from sqlalchemy import create_engine, Unicode, NVARCHAR
engine = create_engine("oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}"
.format(user="xxx",
pw="xxx",
db="xx"))
testdf.to_sql("TEST", con = engine, if_exists = 'append')
但它返回編碼錯誤如下:
UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f447' in position 237: character maps to <undefined>
我怎么解決這個問題? 我正在使用 Python 3、帶有 Anaconda 的 Jupyter Notebook
問題是 Python 正在嘗試將您的數據(以 Unicode 編碼)轉換為其他字符集以插入到數據庫中,而其他字符集不包括\\U0001f447
(在您的數據\\U0001f447
)。 這個答案指出,如果你查看完整的錯誤回溯,而不僅僅是錯誤消息,它會告訴你它試圖轉換成哪個字符集。
有幾種不同的選擇。 最簡單的方法可能是將?charset=utf8
傳遞給連接字符串中的 cx_oracle。 這告訴 cx_oracle 將字符串作為 Unicode 發送。
"oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}?charset=utf8"
您也可以嘗試設置 NLS_LANG 環境變量。 這將告訴 Oracle 服務器期望來自您的 Python 應用程序的 Unicode。
os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.