用Python来扩展Postgresql(一)

本文主要是通过简单的例子演示一下如何在Postgresql里面写Python代码。

1.在Postgresql的机器上安装Python。(这貌似是废话)
2.检查Postgresql的安装目录下面的 lib 文件夹。

检查有没有 plpython.dll 或者 plpython2.dll。 这是Postgresql 调用Python 2.X的DLL文件,在新版的Postgresql 9.X中不一定会有,这个真有点奇怪。自带的只有一个plpython3.dll, 这是针对Python 3.X的,鉴于现在 3.X的Python还不通用,主流的应用还是使用Python 2.X。如果Postgresql里面没有,可以通过以下链接下载这个文件,并且放到 lib 下面:

http://forums.enterprisedb.com/posts/downloadAttach/231.page

3.安装pl/python语言。

在需要添加Python语言支持的数据库里面,运行以下SQL语句:

    CREATE PROCEDURAL LANGUAGE plpythonu;

如果SQL运行正常返回,没有报错,就证明pl/python语言模块已经正确安装了。如果有错,请根据错误提示纠正。

4.创建第一个包含Python代码的方法。

现在我们来创建一个方法,这个简单的方法的作用是判断某一个数值是奇数还是偶数:

CREATE OR REPLACE FUNCTION iseven(integer)
  RETURNS BOOLEAN AS
$BODY$
t = args[0]
return t%2 == 0
$BODY$
  LANGUAGE 'plpythonu' VOLATILE
  COST 100;

可以看到,这其实是一个普通不过的SQL函数定义,只不过Python的代码是夹在两个$BODY$中间。函数的参数是通过args这个数组来获得,然后Python代码返回与SQL函数定义相一致的结果,在这里还可以使用Python的 if ,for ,while ,import等。让我们执行这一段SQL,之后你就可以看到,在数据库的Shemas->public->Functions下面有一个叫 iseven 的函数,这就是我们刚生成的新方法。

5.使用我们新定义的函数。

到这一步,其实就跟普通的SQL函数没区别了,我们可以试着找一些是整数型的字段传给这个新函数:

select * from sometable where iseven(id);


总结:以上例子只是简单的介绍了一下如何在postgresql里面使用Python来扩展。以后有更深入的探讨,再分享给大家。

谢谢


转载于:https://my.oschina.net/lamciuloeng/blog/127942

Python爬虫程序是一种用Python编写的程序,用于自动化地从互联网上获取数据。而PostgreSQL是一种开源的关系型数据库管理系统,它支持高度并发的读写操作,并提供了丰富的功能和扩展性。 在Python中,可以使用第三方库如Requests、BeautifulSoup等来编写爬虫程序。Requests库可以发送HTTP请求,BeautifulSoup库可以解析HTML页面,从而提取所需的数据。通过这些库的组合,可以实现爬取网页内容、提取数据并存储到数据库中。 对于PostgreSQL数据库,可以使用Python中的psycopg2库来连接和操作数据库。psycopg2库提供了一系列的函数和方法,用于执行SQL语句、插入、更新和查询数据等操作。 以下是一个简单的示例代码,演示了如何使用Python编写一个爬虫程序,并将数据存储到PostgreSQL数据库中: ```python import requests from bs4 import BeautifulSoup import psycopg2 # 发送HTTP请求获取网页内容 response = requests.get("https://example.com") html_content = response.text # 解析HTML页面,提取所需数据 soup = BeautifulSoup(html_content, "html.parser") data = soup.find("div", class_="data").text # 连接到PostgreSQL数据库 conn = psycopg2.connect(database="your_database", user="your_username", password="your_password", host="your_host", port="your_port") cur = conn.cursor() # 执行SQL语句,插入数据到数据库 cur.execute("INSERT INTO your_table (data) VALUES (%s)", (data,)) conn.commit() # 关闭数据库连接 cur.close() conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值