我想將一個大的 csv 檔案匯入到 postgresql 中,而不需要為該 csv 檔案創建表。在 stackoverflow 上搜索時,其中一位用戶建議了以下代碼:
from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
df.to_sql('table_name', engine)
基于此,我根據我的 postgresql 的用戶名 =“postgres”和密碼 =“Katherine@412”的資訊撰寫了以下代碼:
from sqlalchemy import create_engine
engine = create_engine('postgresql://[postgres]:Katherine@412@postgres:5432/covid_deaths.csv')
df.to_sql('covid_deaths_owid', engine)
但是它給了我以下錯誤:
OperationalError: (psycopg2.OperationalError) could not translate host name "412@postgres" to address: Unknown server error
有人可以告訴我我做錯了什么嗎?
uj5u.com熱心網友回復:
localhost 是一個有效的主機名,例如 127.0.0.1 或任何其他 IP 地址。
只要您的機器或您有一個實際的服務器,您就可以使用名稱 postgres ping 通。
所以確定你的postgres服務器在哪里運行,如果本地機器localhost是正確的服務器名稱,如果ot是另一臺機器,則需要輸入ioadrees或者你能到達的名稱
有關主機名的更多資訊,您可以在wikipedia中找到
uj5u.com熱心網友回復:
問題是您的連接字串中的密碼包含“at”符號@。這被解釋為標記密碼的結尾和主機名的開頭。
快速解決方案是將第一個@符號替換為@. 連接字串是一種URI,@是的URI編碼@(處理密碼時會轉換成正確的符號)。
通常,您可以在 Python 中以 URI 安全的方式對任何字串進行編碼,如下所示:
import urllib.parse
encoded = urllib.parse.quote_plus(unencoded)
出于某種原因,您的用戶名周圍還有方括號,這也可能在您解決第一個問題后引起問題。
uj5u.com熱心網友回復:
看起來它決定主機名出現在它找到的第一個“at”符號之后。您可以更改密碼以使其中沒有密碼@嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/467663.html
