Tutorial on using PyGreSQL to operate a PostgreSQL database in Python

Source: Internet
Author: User
Tags api manual psql
This article mainly introduces how to use PyGreSQL to operate PostgreSQL databases in Python. If you need it, refer to PostgreSQL, which is a powerful open-source relational database, this article uses python to implement common operations on the open source database PostgreSQL. The development process is as follows:

I. Environment Information:

1. Operating System:

RedHat Enterprise Linux 4
Windows XP SP2

2. database:

PostgreSQL8.3

3. Development tools:

Eclipse + Pydev + python2.6 + PyGreSQL (pg module is provided)

4. Description:

A. PostgreSQL databases run on RedHat Linux, while pgAdmin is also installed on Windows (clients accessing the PostgreSQL server ).
B. PyGreSQL (pg) module download path and API Manual: http://www.pygresql.org/
Click here to download the PyGreSQL module.

Ii. Configuration:

1. Add the following sub-directories under the pgAdmin installation path to the system environment variables:

E: \ Program Files \ PostgreSQL \ 8.3 \ lib

E: \ Program Files \ PostgreSQL \ 8.3 \ bin

2. Copy the dll file in the python installation directory C: \ Python26 \ Lib \ site-packages \ pywin32_system32 to C: \ WINDOWS \ system32.

3. Note: If you skip the preceding two steps, an error will be reported during import of pg, which will take a long time to complete.

3. Program Implementation:

#! /Usr/bin/env python #-*-coding: UTF-8-*-# import logs and pg module import loggingimport logging. configimport pg # log configuration file name LOG_FILENAME = 'logging. conf '# log statement prompt message LOG_CONTENT_NAME = 'pg _ log' def log_init (log_config_filename, logname): ''' Function: log module initialization Function Input: log_config_filename: log configuration file name lognmae: the prompt statement before each log Output: logger author: socrates date: 2012-02-12 ''' logging. config. fileConfig (log_config_filename) logger = logging. getLogger (logname) return loggerdef operate_effec_tbl_product (): ''' Function: Operation pg database Function Input: NONE Output: NONE author: socrates date: 2012-02-12 ''' pgdb_logger.debug ("operate_pai_tbl_product enter... ") # connect to the database try: pgdb_conn = pg. connect (dbname = 'kevin _ test', host = '2017. 168.230.128 ', user = 'dyx1024', passwd = '000000') failed t Exception, e: print e. args [0] pgdb_logger.error ("conntect postgre database failed, ret = % s" % e. args [0]) return pgdb_logger.info ("conntect postgre database (kevin_test) succ. ") # Delete the TABLE SQL _desc =" DROP table if exists tbl_product3; "try: pgdb_conn.query (SQL _desc) failed t Exception, e: print 'drop table failed' pgdb_logger.error (" drop TABLE failed, ret = % s "% e. args [0]) pgdb_conn.close () return pgdb_logger.info ("drop table (tbl_product3) succ. ") # CREATE a TABLE SQL _desc = ''' create table tbl_product3 (I _index INTEGER, sv_productname VARCHAR (32); ''' try: pgdb_conn.query (SQL _desc) Before t Exception, e: print 'create table failed' pgdb_logger.error ("create table failed, ret = % s" % e. args [0]) pgdb_conn.close () return pgdb_logger.info ("create table (tbl_product3) succ. ") # INSERT record SQL _desc =" insert into tbl_product3 (sv_productname) values ('apple') "try: pgdb_conn.query (SQL _desc) failed t Exception, e: print 'insert record into table failed 'pgdb_logger.error ("insert record into table failed, ret = % s" % e. args [0]) pgdb_conn.close () return pgdb_logger.info ("insert record into table (tbl_product3) succ. ") # query Table 1 SQL _desc =" select * from tbl_product3 "for row in pgdb_conn.query (SQL _desc ). dictresult (): print row pgdb_logger.info ("% s", row) # query Table 2 SQL _desc = "select * from tbl_test_port" for row in pgdb_conn.query (SQL _desc ). dictresult (): print row pgdb_logger.info ("% s", row) # Close the database connection pgdb_conn.close () pgdb_logger.debug ("operate_sqlite3_tbl_product leaving... ") if _ name _ = '_ main _': # initialize the log system pgdb_logger = log_init (LOG_FILENAME, LOG_CONTENT_NAME) # operate the database operate_effec_tbl_product ()

Iv. test:

1. Run the following command to print the result:

{'sv_productname': 'apple', 'i_index': None}{'i_status': 1, 'i_port': 2, 'i_index': 1}{'i_status': 1, 'i_port': 3, 'i_index': 2}{'i_status': 1, 'i_port': 5, 'i_index': 3}{'i_status': 1, 'i_port': 0, 'i_index': 5}{'i_status': 1, 'i_port': 18, 'i_index': 7}{'i_status': 1, 'i_port': 8, 'i_index': 8}{'i_status': 1, 'i_port': 7, 'i_index': 9}{'i_status': 1, 'i_port': 21, 'i_index': 10}{'i_status': 1, 'i_port': 23, 'i_index': 11}{'i_status': 1, 'i_port': 29, 'i_index': 12}{'i_status': 1, 'i_port': 3000, 'i_index': 4}{'i_status': 1, 'i_port': 1999, 'i_index': 6}

2. Log File Content:

[2012-02-12 18:09:53,536 pg_log]DEBUG: operate_postgre_tbl_product enter... (test_func.py:36)[2012-02-12 18:09:53,772 pg_log]INFO: conntect postgre database(kevin_test) succ. (test_func.py:46)[2012-02-12 18:09:53,786 pg_log]INFO: drop table(tbl_product3) succ. (test_func.py:58)[2012-02-12 18:09:53,802 pg_log]INFO: create table(tbl_product3) succ. (test_func.py:73)[2012-02-12 18:09:53,802 pg_log]INFO: insert record into table(tbl_product3) succ. (test_func.py:85)[2012-02-12 18:09:53,802 pg_log]INFO: {'sv_productname': 'apple', 'i_index': None} (test_func.py:91)[2012-02-12 18:09:53,802 pg_log]INFO: {'i_status': 1, 'i_port': 2, 'i_index': 1} (test_func.py:97)[2012-02-12 18:09:53,802 pg_log]INFO: {'i_status': 1, 'i_port': 3, 'i_index': 2} (test_func.py:97)[2012-02-12 18:09:53,802 pg_log]INFO: {'i_status': 1, 'i_port': 5, 'i_index': 3} (test_func.py:97)[2012-02-12 18:09:53,802 pg_log]INFO: {'i_status': 1, 'i_port': 0, 'i_index': 5} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 18, 'i_index': 7} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 8, 'i_index': 8} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 7, 'i_index': 9} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 21, 'i_index': 10} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 23, 'i_index': 11} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 29, 'i_index': 12} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 3000, 'i_index': 4} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]INFO: {'i_status': 1, 'i_port': 1999, 'i_index': 6} (test_func.py:97)[2012-02-12 18:09:53,819 pg_log]DEBUG: operate_sqlite3_tbl_product leaving... (test_func.py:101)

3. View psql results:

[root@kevin ~]# su - postgres[postgres@kevin ~]$ psql -U dyx1024 -d kevin_testpsql (8.4.2)Type "help" for help.kevin_test=# \dt        List of relations Schema |   Name   | Type |   Owner   --------+---------------+-------+---------------- public | tbl_product3 | table | dyx1024 public | tbl_test_port | table | pg_test_user_3(2 rows)kevin_test=# select * from tbl_product3; i_index | sv_productname ---------+----------------     | apple(1 row)kevin_test=# select * from tbl_test_port; i_index | i_port | i_status ---------+--------+----------    1 |   2 |    1    2 |   3 |    1    3 |   5 |    1    5 |   0 |    1    7 |   18 |    1    8 |   8 |    1    9 |   7 |    1   10 |   21 |    1   11 |   23 |    1   12 |   29 |    1    4 |  3000 |    1    6 |  1999 |    1(12 rows)kevin_test=# \q[postgres@kevin ~]$ 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.