2017-08-30 26 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

相关问题