Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13012
  • 博文数量: 2
  • 博客积分: 20
  • 博客等级: 民兵
  • 技术积分: 32
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-19 11:14
文章分类
文章存档

2015年(1)

2014年(1)

我的朋友

分类: Python/Ruby

2014-07-01 11:07:13

为避免忘记,待日后可查参考,今天把PYTHON访问POSTGRESQL数据库的方法,记录一下,
1)使用了PSYCOPG2访问驱动接口,需要下载这个驱动,然后SETUP安装即可,
2)本次程序主要测试了如何插入数据到数据库,如何查询,如何调用存储过程这三个方面
3)代码如下:

  1. import sys
  2. import psycopg2
  3. import datetime
  4. import time

  5. if __name__=="__main__":
  6.     try:    
  7.         print("today is: ",datetime.datetime.now())    
  8.         print("today is:",datetime.date.today())
  9.         print("time is :",time.strftime("%H:%M:%S",time.localtime()))

  10.         conn=psycopg2.connect("host=localhost dbname=testdb user=postgres password=123 port=5432")
  11.         cur=conn.cursor()

  12.         cur.execute("select version()")
  13.         ver=cur.fetchone()
  14.         print("version %s:"%(ver))        
  15.     
  16.         
  17.         vpo="PO-001"
  18.         vpart_no="A-001"
  19.         vpo_qty=100
  20.         vqty=20
  21.         vloc="LG01"
  22.         vtdate=datetime.date.today()

  23.         cur.execute("insert into pur_instk(po,part_no,po_qty,qty,loc,tdate) values(%s,%s,%s,%s,%s,%s)",
  24.                     (vpo,vpart_no,vpo_qty,vqty,vloc,vtdate))

  25.         vpo="PO-002"
  26.         vpart_no="A-002"
  27.         vpo_qty=100
  28.         vqty=20
  29.         vloc="LG02"
  30.         vtdate=datetime.date.today()

  31.         cur.execute("insert into pur_instk(po,part_no,po_qty,qty,loc,tdate) values(%s,%s,%s,%s,%s,%s)",
  32.                     (vpo,vpart_no,vpo_qty,vqty,vloc,vtdate))

  33.         vpo="PO-003"
  34.         vpart_no="A-003"
  35.         vpo_qty=100
  36.         vqty=20
  37.         vloc="LG03"
  38.         vtdate=datetime.date.today()

  39.         cur.execute("insert into pur_instk(po,part_no,po_qty,qty,loc,tdate) values(%s,%s,%s,%s,%s,%s)",
  40.                     (vpo,vpart_no,vpo_qty,vqty,vloc,vtdate))

  41.         conn.commit()

  42.         cur.execute("select * from pur_instk")
  43.         rec=cur.fetchall()
  44.         print("record count is :%d"%(len(rec)))

  45.         for r in rec:
  46.             print(r[0],r[1],r[2],r[3],r[4],r[5])

  47.         cur.callproc("testz_sum",[10,20])    
  48.         vsum=cur.fetchone()
  49.         print("call stored proc,result sum = %d"%(vsum))

  50.         cur.close()
  51.         conn.close()

  52.     except Exception as e:
  53.         conn.rollback()    
  54.         print("occur a fatel error ,please check!")
  55.         print(e)
4)代码简述:
A:用POSTGRESQL在后台建立一个数据表,用PYTHON前端插入三条记录, commit提交,
然后再查询出来。

B:写一个testz_sum存储过程,二个参数,在里面做个简单处理,返回结果

5)运行结果:

today is:  2014-07-01 10:26:37.062500
today is: 2014-07-01
time is : 10:26:37
version PostgreSQL 9.2.2, compiled by Visual C++ build 1600, 32-bit:
record count is :3
PO-001 A-001 100.0000 20.0000 LG01       2014-07-01
PO-002 A-002 100.0000 20.0000 LG02       2014-07-01
PO-003 A-003 100.0000 20.0000 LG03       2014-07-01
call stored proc,result sum = 35


阅读(1491) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:POSTGRESQL显式和隐式游标效率对比

给主人留下些什么吧!~~