2011-02-02 64 views
3

我有幾次需要在現場收集數據。這是在我不總是有權訪問我的postgres數據庫的情況下。使用psycopg2構建無連接查詢

爲了保持同步,如果我可以脫機使用psycopg2函數來生成可以被阻止並且一旦我能夠連接到數據庫的查詢,那將是非常好的;處理所有被阻止的事情。

我目前正在努力的一件事是,psycopg2遊標需要建立一個連接。

我的問題是:

是否有使用光標做的事情一樣mogrify沒有活動的連接對象的方法嗎?或者連接對象沒有連接到數據庫?然後,我想暫時將mogrify結果寫入文件,以便稍後處理它們。

回答

0

看起來,將數據稍後插入另一個結構中似乎更容易,更通用。也許是一個csv文件。然後,當你連接時,你可以遍歷該表格,但如果有必要,你也可以輕鬆地使用該CSV做其他事情。

+0

我會用這個辦法。在線時創建一個(或多個)可以複製到postgresql中的csv文件:http://initd.org/psycopg/docs/cursor.html#cursor.copy_from。謝謝 – milovanderlinden 2011-02-04 08:31:36

7

這將是一個脆弱的方法,因爲連接用於檢測用於轉義的一些參數(編碼,符合標準的字符串等)。

您可以在參數上調用psycopg2.extensions.adapt(x).getquoted(),然後使用常規Python %運算符將它們合併到查詢中,然後可以有一個「手動mogrify」。

雖然目前發佈的psycopg版本(最高2.3.2)可能會在None - >NULL轉換上失敗。您可以手動轉換這些值或將適配器註冊爲無:您可以在this commit中看到如何操作。

+0

謝謝你的回答。我瞭解脆弱性,並且確實會尋找另一種選擇。 – milovanderlinden 2011-02-04 08:32:10