当前位置: 代码网 > it编程>前端脚本>Python > 使用python进行PostgreSQL数据库连接全过程

使用python进行PostgreSQL数据库连接全过程

2025年03月04日 Python 我要评论
前言postgresql 数据库是最常用的关系型数据库之一,最吸引人的一点是它作为开源数据库且具有可拓展性,能够提供丰富的应用。运用python可以很简单的建立postgresql 数据库连接,其中最

前言

postgresql 数据库是最常用的关系型数据库之一,最吸引人的一点是它作为开源数据库且具有可拓展性,能够提供丰富的应用。运用python可以很简单的建立postgresql 数据库连接,其中最受欢迎的就是psycopg。

1. 安装psycopg2

psycopy是针对python的postgres 数据库的适配模块,安装psycopg2可以整合python和postgres 。使用cmd输入命令进行安装:

pip install psycopg2

也可以在pycharm中查找psycopg2安装包:

2. 图形化连接数据库

在pycharm中选择database,点击左上角的+添加数据库,选择postgresql:

创建数据库连接后点击apply,数据库会显示在右侧窗格中。

3. 代码连接数据库

3.1 不使用配置文件

下面使用 psycopy2.connect()方法连接到postgresql数据库。通过调用cursor类中的execute()方法对数据库进行操作。在execute()中用sql语句创建表。使用commit()将数据发送到数据库服务器,最后使用close()关闭数据库。commit()能够对数据库进行改变,且不可逆。

connect() 方法的参数一般包括:

  • database: 要连接的数据库名称
  • user:连接数据库的用户名
  • password: 连接数据库的密码
  • host: 数据库端口的地址,一般为 “localhost”,或者主机的ip地址
  • port: 门户 默认为5432.
import psycopg2

con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print(con)
print("database opened successfully")
cur = con.cursor()
cur.execute('select version()')
db_version = cur.fetchone()
print(db_version)
con.close()

运行结果如下:

3.2 使用配置文件

可以使用配置文件来存储所有连接参数。

database.ini文件的内容如下:

[postgresql]
host = 192.168.198.152
database = postgres
user = fbase
password = 123456
port = 8432

下面的config()函数会读取database.ini文件并返回连接参数。该config()函数放置在config.py文件中:

from configparser import configparser

def config(filename='../../resource/database.ini', section='postgresql'):
    # create a parser
    parser = configparser()
    # read config file
    parser.read(filename)

    # get section, default to postgresql
    db = {}
    if parser.has_section(section):
        params = parser.items(section)
        for param in params:
            db[param[0]] = param[1]
    else:
        raise exception('section {0} not found in the {1} file'.format(section, filename))

    return db

下面的connect()函数连接到suppliers数据库并打印出 postgresql 数据库版本。

import psycopg2

from demo.pgdemo.config import config

def connect():
    """ connect to the postgresql database server """
    conn = none
    try:
        # read connection parameters
        params = config()

        # connect to the postgresql server
        print('connecting to the postgresql database...')
        conn = psycopg2.connect(**params)

        # create a cursor
        cur = conn.cursor()

        # execute a statement
        print('postgresql database version:')
        cur.execute('select version()')

        # display the postgresql database server version
        db_version = cur.fetchone()
        print(db_version)

        # close the communication with the postgresql
        cur.close()
    except (exception, psycopg2.databaseerror) as error:
        print(error)
    finally:
        if conn is not none:
            conn.close()
            print('database connection closed.')

if __name__ == '__main__':
    connect()

怎么运行的。

  • 首先,从database.ini文件中读取数据库连接参数。
  • 接下来,通过调用connect()函数创建一个新的数据库连接。
  • 然后,新建一个cursor并执行sql语句来获取 postgresql 数据库版本。
  • 之后,通过调用游标对象的 fetchone()方法读取结果集。
  • 最后,通过调用cursorconnection对象的close()方法关闭与数据库服务器的通信。

4. dml语句测试

4.1 创建表

使用sql(structured query language)语句create table添加新的表:

import psycopg2

# 建立数据库连接
con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print("database opened successfully")
# 调用游标对象
cur = con.cursor()
# 用cursor中的execute 使用ddl语句创建一个名为 student 的表,指定表的字段以及字段类型
cur.execute('''
       create table if not exists student
      (admission int primary key     not null,
      name           text            not null,
      age            int             not null,
      course        char(50),
      department        char(50));''')

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

postgres=# \d
        list of relations
 schema |  name   | type  | owner 
--------+---------+-------+-------
 public | student | table | fbase
(1 row)

4.2 表插入数据

使用insert into 在以经生成的表中插入数据

import psycopg2

# 建立数据库连接
con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print("database opened successfully")
# 调用游标对象
cur = con.cursor()
# 在表中插入一条数据
cur.execute("insert into student (admission,name,age,course,department) "
            "values (3420, 'john', 18, 'computer science', 'ict')")

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

postgres=# select * from student ;
 admission | name | age |                       course                       |                     department                     
-----------+------+-----+----------------------------------------------------+----------------------------------------------------
      3420 | john |  18 | computer science                                   | ict                                               
(1 row)

4.3 表更新数据

同样使用sql语句更新目标字段,使用commit()更新数据库

import psycopg2

# 建立数据库连接
con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print("database opened successfully")
# 调用游标对象
cur = con.cursor()
# 更新表中的数据
cur.execute("update student set name = 'joe' where admission = 3420")

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

postgres=# select * from student ;
 admission | name | age |                       course                       |                     department                     
-----------+------+-----+----------------------------------------------------+----------------------------------------------------
      3420 | john |  18 | computer science                                   | ict                                               
(1 row)

postgres=# select * from student ;
 admission | name | age |                       course                       |                     department                     
-----------+------+-----+----------------------------------------------------+----------------------------------------------------
      3420 | joe  |  18 | computer science                                   | ict                                        
(1 row)

4.4 表删除数据

同样使用sql语句更新目标字段,使用commit()更新数据库

import psycopg2

# 建立数据库连接
con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print("database opened successfully")
# 调用游标对象
cur = con.cursor()
# 删除表中的数据
cur.execute("delete from student where admission = 3420")

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

postgres=# select * from student ;
 admission | name | age |                       course                       |                     department                     
-----------+------+-----+----------------------------------------------------+----------------------------------------------------
      3420 | joe  |  18 | computer science                                   | ict                                               
(1 row)

postgres=# select * from student ;
 admission | name | age | course | department 
-----------+------+-----+--------+------------
(0 rows)

5. dql语句测试

5.1 查看表中的数据

同样使用sql语句更新目标字段,使用commit()更新数据库

import psycopg2

# 建立数据库连接
con = psycopg2.connect(database="postgres",
                       user="fbase",
                       password="123456",
                       host="192.168.198.152",
                       port="8432")
print("database opened successfully")
# 调用游标对象
cur = con.cursor()
# 删除表中的数据
cur.execute("select * from student")

rows = cur.fetchall()
for row in rows:
    print("admission =", row[0])
    print("name =", row[1])
    print("age =", row[2])
    print("course =", row[3])
    print("department =", row[4], "\n")

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

d:\python3\python.exe d:/project/python/demo/demo/pgdemo/dql_select_1.py
database opened successfully
admission = 3420
name = john
age = 18
course = computer science                                  
department = ict
w[3])
    print("department =", row[4], "\n")

# 提交更改,增添或者修改数据只会必须要提交才能生效
con.commit()
con.close()

结果查看:

d:\python3\python.exe d:/project/python/demo/demo/pgdemo/dql_select_1.py
database opened successfully
admission = 3420
name = john
age = 18
course = computer science                                  
department = ict

总结 

到此这篇关于使用python进行postgresql数据库连接的文章就介绍到这了,更多相关python连接postgresql数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com