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

Python:操作PostgreSQL數據庫(使用DB API2.0)

日期:2017/3/1 10:32:26   编辑:Linux編程

在《Python:操作PostgreSQL數據庫(使用PyGreSQL)》(見 http://www.linuxidc.com/Linux/2012-02/54214.htm)一文中使用PyGreSQL模塊實現了對PostgreSQL數據庫的操作,今天使用另一種python通用的數據庫訪問接口DB API2.0來實現一下同樣的操作,其實在《Python:操作嵌入式數據庫SQLite》(見 http://www.linuxidc.com/Linux/2012-02/54213.htm)一文中我們使用的就是DB API2.0,我們可以看到,它對不同數據庫提供了統一的訪問接口,更多關於DB API2.0的介紹請參考http://www.python.org/dev/peps/pep-0249/

來看看實現,首先我們要下載提供DB API2.0接口的模塊psycopg2,路徑:http://initd.org/psycopg/download/,此模塊API手冊地址為:http://initd.org/psycopg/docs/index.html

一、實現:

[python]

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #導入日志及psycopg2模塊
  4. import logging
  5. import logging.config
  6. import psycopg2
  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-13
  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-13
  30. '''
  31. pgdb_logger.debug("operate_postgre_tbl_product enter...")
  32. #連接數據庫
  33. try:
  34. pgdb_conn = psycopg2.connect(database = 'kevin_test', user = 'dyx1024', password = '888888', host = '192.168.230.128')
  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. pg_cursor = pgdb_conn.cursor()
  41. #刪除表
  42. sql_desc = "DROP TABLE IF EXISTS tbl_product3;"
  43. try:
  44. pg_cursor.execute(sql_desc)
  45. except Exception, e:
  46. print 'drop table failed'
  47. pgdb_logger.error("drop table failed, ret = %s" % e.args[0])
  48. pg_cursor.close()
  49. pgdb_conn.close()
  50. return
  51. pgdb_conn.commit()
  52. pgdb_logger.info("drop table(tbl_product3) succ.")
  53. #創建表
  54. sql_desc = '''''CREATE TABLE tbl_product3(
  55. i_index INTEGER,
  56. sv_productname VARCHAR(32)
  57. );'''
  58. try:
  59. pg_cursor.execute(sql_desc)
  60. except Exception, e:
  61. print 'create table failed'
  62. pgdb_logger.error("create table failed, ret = %s" % e.args[0])
  63. pg_cursor.close()
  64. pgdb_conn.close()
  65. return
  66. pgdb_conn.commit()
  67. pgdb_logger.info("create table(tbl_product3) succ.")
  68. #插入記錄
  69. sql_desc = "INSERT INTO tbl_product3(sv_productname) values('apple')"
  70. try:
  71. pg_cursor.execute(sql_desc)
  72. except Exception, e:
  73. print 'insert record into table failed'
  74. pgdb_logger.error("insert record into table failed, ret = %s" % e.args[0])
  75. pg_cursor.close()
  76. pgdb_conn.close()
  77. return
  78. pgdb_conn.commit()
  79. pgdb_logger.info("insert record into table(tbl_product3) succ.")
  80. #查詢表方法一
  81. sql_desc = "select * from tbl_product3"
  82. try:
  83. pg_cursor.execute(sql_desc)
  84. except Exception, e:
  85. print 'select record from table tbl_product3 failed'
  86. pgdb_logger.error("select record from table tbl_product3 failed, ret = %s" % e.args[0])
  87. pg_cursor.close()
  88. pgdb_conn.close()
  89. return
  90. for row in pg_cursor:
  91. print row
  92. pgdb_logger.info("%s", row)
  93. print '*' * 20
  94. #查詢表方法二
  95. sql_desc = "select * from tbl_test_port"
  96. try:
  97. pg_cursor.execute(sql_desc)
  98. except Exception, e:
  99. print 'select record from table tbl_test_port failed'
  100. pgdb_logger.error("select record from table tbl_test_port failed, ret = %s" % e.args[0])
  101. pg_cursor.close()
  102. pgdb_conn.close()
  103. return
  104. for row in pg_cursor.fetchall():
  105. print row
  106. pgdb_logger.info("%s", row)
  107. #關閉數據庫連接
  108. pg_cursor.close()
  109. pgdb_conn.close()
  110. pgdb_logger.debug("operate_sqlite3_tbl_product leaving...")
  111. if __name__ == '__main__':
  112. #初始化日志系統
  113. pgdb_logger = log_init(LOG_FILENAME, LOG_CONTENT_NAME)
  114. #操作數據庫
  115. operate_postgre_tbl_product()
Copyright © Linux教程網 All Rights Reserved