歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python:操作PostgreSQL數據庫(使用PyGreSQL)

Python:操作PostgreSQL數據庫(使用PyGreSQL)

日期:2017/3/1 10:32:27   编辑:Linux編程
這裡(http://www.linuxidc.com/Linux/2012-02/54213.htm)寫了使用python寫了操作嵌入式數據庫SQLite的方法,今天用python寫了針對個人比較熟悉的開源數據庫PostgreSQL的常用操作,開發過程簡介如下:

一、環境信息:

1、操作系統:

RedHat Enterprise Linux 4

Windows XP SP2

2、數據庫:

PostgreSQL8.3

3、 開發工具:

Eclipse+Pydev+python2.6+PyGreSQL(提供pg模塊)

4、說明:

a、PostgreSQL數據庫運行於RedHat Linux上,Windows下也要安裝pgAdmin(訪問PostgreSQL服務器的客戶端)。

b、PyGreSQL(即pg)模塊下載路徑及API手冊:http://www.pygresql.org/

二、配置:

1、將pgAdmin安裝路徑下以下子目錄添加到系統環境變量中:

E:\Program Files\PostgreSQL\8.3\lib

E:\Program Files\PostgreSQL\8.3\bin

2、將python安裝目錄C:\Python26\Lib\site-packages\pywin32_system32下的dll文件拷貝到C:\WINDOWS\system32

3、說明:

a. 如果跳過以上兩步,在import pg時將會報錯,浪費較長時間才搞定。

b. 如果對PostgreSQL安裝和配置不熟悉,請參考本博客中以下幾篇文章:

《RedHat Linux上安裝PostgreSQL》 http://www.linuxidc.com/Linux/2011-08/40521.htm

《PostgreSQL服務端監聽設置及客戶端連接方法》 http://www.linuxidc.com/Linux/2011-08/40528.htm

《PostgreSQL數據庫創建、刪除方法》 http://www.linuxidc.com/Linux/2011-08/40525.htm

三、程序實現:

[python] view plaincopyprint?

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #導入日志及pg模塊
  4. import logging
  5. import logging.config
  6. import pg
  7. #日志配置文件名
  8. LOG_FILENAME = 'logging.conf'
  9. #日志語句提示信息
  10. LOG_CONTENT_NAME = 'pg_log'
  11. def log_init(log_config_filename, logname):
  12. '''''
  13. Function:日志模塊初始化函數
  14. Input:log_config_filename:日志配置文件名
  15. lognmae:每條日志前的提示語句
  16. Output: logger
  17. author: socrates
  18. date:2012-02-12
  19. '''
  20. logging.config.fileConfig(log_config_filename)
  21. logger = logging.getLogger(logname)
  22. return logger
  23. def operate_postgre_tbl_product():
  24. '''''
  25. Function:操作pg數據庫函數
  26. Input:NONE
  27. Output: NONE
  28. author: socrates
  29. date:2012-02-12
  30. '''
  31. pgdb_logger.debug("operate_postgre_tbl_product enter...")
  32. #連接數據庫
  33. try:
  34. pgdb_conn = pg.connect(dbname = 'kevin_test', host = '192.168.230.128', user = 'dyx1024', passwd = '888888')
  35. except Exception, e:
  36. print e.args[0]
  37. pgdb_logger.error("conntect postgre database failed, ret = %s" % e.args[0])
  38. return
  39. pgdb_logger.info("conntect postgre database(kevin_test) succ.")
  40. #刪除表
  41. sql_desc = "DROP TABLE IF EXISTS tbl_product3;"
  42. try:
  43. pgdb_conn.query(sql_desc)
  44. except Exception, e:
  45. print 'drop table failed'
  46. pgdb_logger.error("drop table failed, ret = %s" % e.args[0])
  47. pgdb_conn.close()
  48. return
  49. pgdb_logger.info("drop table(tbl_product3) succ.")
  50. #創建表
  51. sql_desc = '''''CREATE TABLE tbl_product3(
  52. i_index INTEGER,
  53. sv_productname VARCHAR(32)
  54. );'''
  55. try:
  56. pgdb_conn.query(sql_desc)
  57. except Exception, e:
  58. print 'create table failed'
  59. pgdb_logger.error("create table failed, ret = %s" % e.args[0])
  60. pgdb_conn.close()
  61. return
  62. pgdb_logger.info("create table(tbl_product3) succ.")
  63. #插入記錄
  64. sql_desc = "INSERT INTO tbl_product3(sv_productname) values('apple')"
  65. try:
  66. pgdb_conn.query(sql_desc)
  67. except Exception, e:
  68. print 'insert record into table failed'
  69. pgdb_logger.error("insert record into table failed, ret = %s" % e.args[0])
  70. pgdb_conn.close()
  71. return
  72. pgdb_logger.info("insert record into table(tbl_product3) succ.")
  73. #查詢表 1
  74. sql_desc = "select * from tbl_product3"
  75. for row in pgdb_conn.query(sql_desc).dictresult():
  76. print row
  77. pgdb_logger.info("%s", row)
  78. #查詢表2
  79. sql_desc = "select * from tbl_test_port"
  80. for row in pgdb_conn.query(sql_desc).dictresult():
  81. print row
  82. pgdb_logger.info("%s", row)
  83. #關閉數據庫連接
  84. pgdb_conn.close()
  85. pgdb_logger.debug("operate_sqlite3_tbl_product leaving...")
  86. if __name__ == '__main__':
  87. #初始化日志系統
  88. pgdb_logger = log_init(LOG_FILENAME, LOG_CONTENT_NAME)
  89. #操作數據庫
  90. operate_postgre_tbl_product()
Copyright © Linux教程網 All Rights Reserved