2017-08-30 91 views
0

我有一個格式爲{YYYYMMDD}的格魯吉亞日期的數據庫。我想爲Jalai日期提供一個專欄(或者年份,月份和日期)。我可以很容易地使用python編寫和腳本將格魯吉亞日期轉換爲Jalali。這是我在Python寫的:使用python腳本或SQL函數將新列添加到(postgres)SQL數據庫的最佳方法?

import jdatetime as jdt 
georgian = str(20170828) 
def GtoJ(georgian): 
    jalai = jdt.GregorianToJalali(int(georgian[:4]),int(georgian[4:6]),int(georgian[-2:])) 
#  print('{}{:02}{:02}'.format(jalai.jyear,jalai.jmonth,jalai.jday)) 
    return '{}{:02}{:02}'.format(jalai.jyear,jalai.jmonth,jalai.jday) 

print(GtoJ(georgian)) ##13960606 

假設我創造我的名字jdate PostgreSQL數據庫的空列,使用SQLAlchemy的或任何其他的SQL引擎我更新的每一行都具有以下代碼:

for date in history_tabel_date: 
    jdate = GtoJ(str(date)) 
    con.execute('update history_tale jdate= value_jdate where date = {}'.format(date)) 

寫什麼方法來執行相同的事情的SQL函數?

一般來說,在sql或sql函數之外編寫腳本是比較好的方法,建議使用?

回答

1

當使用數據庫作爲腳本資源時,當腳本和數據庫由於創建連接,傳輸數據等而來回運行時會出現瓶頸。因此,您應該注意做大多數數據處理在任一端,並減少查詢數(INSERTS,UPDATESDELETES)至最低。

如果您正在尋找在數據庫端執行的功能,你可以考慮使用PL/Python這是一個

過程語言允許用Python語言編寫PostgreSQL函數。

+0

這是偉大的aydow,在文檔中我沒有看到任何導入語句,我可以導入使用pip安裝的軟件包嗎? – Mehdi

+0

[導入語句](https://stackoverflow.com/questions/15023080/how-are-import-statements-in-plpython-handled) – aydow

+0

我認爲這可能有助於[導入pip安裝的庫](https:/ /blag.felixhummel.de/postgresql/plpython.html)。我以前沒有用過它,但是如果圖書館在你的'PYTHONPATH'中,那麼它應該可以工作。 – aydow

相關問題