PostgreSQL連接Python

2021-01-07 51CTO

安裝

PostgreSQL可以用Python psycopg2模塊集成。 sycopg2是Python程式語言的PostgreSQL資料庫的適配器。 其程序代碼少,速度快,穩定。不需要單獨安裝這個模塊,因為它默認情況下被運往隨著Python版本在2.5.x一起的。如果不把它安裝在機器上,然後可 以使用yum命令安裝它,如下所示:

$yum install python-psycopg2 

要使用psycopg2的模塊,首先必須創建一個Connection對象,它表示資料庫然後再可以選擇創建遊標對象,這將幫助執行的所有SQL語句。

Python psycopg2 模塊APIs

以下是psycopg2的重要的的模塊例程可以滿足Python程序與PostgreSQL資料庫的工作。如果尋找一個更複雜的應用程式,那麼可以看看Python psycopg2的模塊的官方文檔。

 

連接到資料庫

Python代碼顯示了如何連接到一個現有的資料庫。如果資料庫不存在,那麼它就會被創建,最終將返回一個資料庫對象。

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")  print "Opened database successfully" 

在這裡,也可以提供資料庫testdb的名稱,如果資料庫成功打開,那麼它會給下面的消息:

Open database successfully 

創建表

以下Python程序將使用以前創建的資料庫中創建一個表:

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432") print "Opened database successfully"  cur = conn.cursor() cur.execute('''CREATE TABLE COMPANY        (ID INT PRIMARY KEY     NOT NULL,        NAME           TEXT    NOT NULL,        AGE            INT     NOT NULL,        ADDRESS        CHAR(50),        SALARY         REAL);''') print "Table created successfully"  conn.commit() conn.close() 

上述程序執行時,它會創建表COMPANY 在資料庫test.db中,它會顯示以下消息:

Opened database successfully Table created successfully 

INSERT 操作

Python程序顯示了我們如何創建表COMPANY 在上面的例子中創建表中的記錄:

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432") print "Opened database successfully"  cur = conn.cursor()  cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \       VALUES (1, 'Paul', 32, 'California', 20000.00 )");  cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \       VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");  cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \       VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");  cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \       VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");  conn.commit() print "Records created successfully"; conn.close() 

上述程序執行時,它會創建COMPANY表中的記錄,並顯示以下兩行:

Opened database successfully Records created successfully 

SELECT 操作

Python程序,顯示如何獲取並顯示COMPANY 表在上面的例子中創建的記錄:

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432") print "Opened database successfully"  cur = conn.cursor()  cur.execute("SELECT id, name, address, salary  from COMPANY") rows = cur.fetchall() for row in rows:    print "ID = ", row[0]    print "NAME = ", row[1]    print "ADDRESS = ", row[2]    print "SALARY = ", row[3], "\n"  print "Operation done successfully"; conn.close() 

當上述程序執行時,它會產生以下結果:

Opened database successfully ID =  1 NAME =  Paul ADDRESS =  California SALARY =  20000.0  ID =  2 NAME =  Allen ADDRESS =  Texas SALARY =  15000.0  ID =  3 NAME =  Teddy ADDRESS =  Norway SALARY =  20000.0  ID =  4 NAME =  Mark ADDRESS =  Rich-Mond SALARY =  65000.0  Operation done successfully 

UPDATE 操作

Python代碼顯示如何,我們可以使用UPDATE語句來更新記錄,然後從COMPANY表獲取並顯示更新的記錄:

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432") print "Opened database successfully"  cur = conn.cursor()  cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1") conn.commit print "Total number of rows updated :", cur.rowcount  cur.execute("SELECT id, name, address, salary  from COMPANY") rows = cur.fetchall() for row in rows:    print "ID = ", row[0]    print "NAME = ", row[1]    print "ADDRESS = ", row[2]    print "SALARY = ", row[3], "\n"  print "Operation done successfully"; conn.close() 

當上述程序執行時,它會產生以下結果:

Opened database successfully Total number of rows updated : 1 ID =  1 NAME =  Paul ADDRESS =  California SALARY =  25000.0  ID =  2 NAME =  Allen ADDRESS =  Texas SALARY =  15000.0  ID =  3 NAME =  Teddy ADDRESS =  Norway SALARY =  20000.0  ID =  4 NAME =  Mark ADDRESS =  Rich-Mond SALARY =  65000.0  

Operation done successfully 

DELETE 操作

Python代碼顯示了如何我們可以使用DELETE語句刪除記錄,然後獲取並顯示COMPANY 表剩餘的記錄:

#!/usr/bin/python  import psycopg2  conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432") print "Opened database successfully"  cur = conn.cursor()  cur.execute("DELETE from COMPANY where ID=2;") conn.commit print "Total number of rows deleted :", cur.rowcount  cur.execute("SELECT id, name, address, salary  from COMPANY") rows = cur.fetchall() for row in rows:    print "ID = ", row[0]    print "NAME = ", row[1]    print "ADDRESS = ", row[2]    print "SALARY = ", row[3], "\n"  print "Operation done successfully"; conn.close() 

當上述程序執行時,它會產生以下結果:

Opened database successfully Total number of rows deleted : 1 ID =  1 NAME =  Paul ADDRESS =  California SALARY =  20000.0  ID =  3 NAME =  Teddy ADDRESS =  Norway SALARY =  20000.0  ID =  4 NAME =  Mark ADDRESS =  Rich-Mond SALARY =  65000.0  Operation done successfully 

原文連結:http://www.yiibai.com/html/postgresql/2013/080998.html

【編輯推薦】

【責任編輯:

chensf

TEL:(010)68476606】

相關焦點

  • PostgreSQL連接Perl
    >host    all         all         127.0.0.1/32          md5 可以使用下面的命令啟動/重新啟動Postgres的伺服器的如果它沒有運行:[root@host]# service postgresql
  • 滲透中利用postgresql getshell及注入技巧
    3.B站在線學習連結由於分享的資源連結經常被和諧,所以必須遷移到B站上供大家學習B站up主官方帳號:VMYKnetwork團隊0x00 前言研究postgresql資料庫如何getshell是在滲透中遇到一個pgAdmin的web管理頁面可以直接操作postgresql且通過網上的文章沒有達到9.6版本getshell的效果所以便有了以下文章。
  • 去哪兒PostgreSQL指南
    主要內容命名規範Column設計Constraints 設計Index 設計關於NULL開發相關規範管理相關規範1 命名規範1.DB object: database, schema, table
  • python是如何來連接mysql的
    python中連接mysql1.MySQLdb模塊安裝不同的資料庫需要下載不同的DB API模塊,首先在python中執行import MySQLdb如果有報錯「Nomodule named MySQLdb」代表該模塊未安裝,需要先安裝MySQLdb模塊。
  • SQLAlchemy 1.2.16 發布,Python ORM 框架
    Fixed a regression introduced in version 1.2 where a refactor of the SQLAlchemyError base exception class introduced an inappropriate coercion of a plain string message into Unicode under python
  • PostgreSQL簡介及安裝
    PostgreSQL支持文本,圖像,聲音和視頻,並包括用於C/C++,Java,Perl,Python,Ruby,Tcl和開放資料庫連接(ODBC)的編程接口。3. PostgreSQL支持SQL的許多功能,例如複雜SQL查詢,SQL子選擇,外鍵,觸發器,視圖,事務,多進程並發控制(MVCC),流式複製(9.0),熱備(9.0)。4.
  • 「值得收藏」PostgreSQL從入門到放棄
    service run by the PostgreSQL community:https://planet.postgresql.org/官方wiki kernal:https://wiki.postgresql.org/wiki/Pgkernel、https://wiki.postgresql.org/wiki/Developer_FAQ阿里內核月報:https:/
  • 每天一分鐘,python一點通(Python 連接資料庫mysql)
    人工智慧一加一 舉報   上期文章我們分享了如何使用資料庫界面化操作mysql資料庫每天一分鐘,python
  • PostgreSQL初體驗
    學習參考地址:菜鳥教程:https://www.runoob.com/postgresql/postgresql-tutorial.htmlW3C:https://www.w3cschool.cn/qysrc/qysrc-jwxg3758.html首先是配置環境,本人使用的是windows系統,接下來都是windows下的一些學習過程。
  • 9月推薦 | 從近1000篇Python文章中精選Top10
    閱讀連結:https://medium.freecodecamp.org/an-a-z-of-useful-python-tricks-b467524ee747▌2.Python 的 Socket 編程指南該文章給出了有關 Python 中 Socket 編程的詳細介紹
  • SQLAlchemy 1.3.8 發布,Python ORM 框架
    映射的主鍵列的值engine[engine] [feature] 添加了新參數 create_engine.hide_parameters,當設置為 True 時,將導致不再記錄 SQL 參數,也不會在 StatementError 對象的字符串表示形式中呈現[engine] [bug] 修復了在第一次連接時發生的方言
  • repmgr 5.1 發布,PostgreSQL 集群複製管理與故障轉移工具
    從理論上講,repmgr 可以與用於管理 repmgr 資料庫的標準資料庫用戶,以及用於管理複製連接(和複製插槽)的單獨複製用戶一起運行。但某些操作仍將需要超級用戶權限,例如用於發出 CHECKPOINT 作為切換操作的一部分;在這種情況下,應該為有效的超級用戶提供 -S/--superuser 選項。
  • PostgreSQL Timelines and History File:Master Guide
    00000001000000000000000AAt this point of time, I have done a pointin time recovery to some point in 000000010000000000000007 wal, before secondinsert.so I gave recovery target lsn as『0/07000060』 in postgresql.conf
  • 2018年出現頻率最高的50道Python面試題系列之六
    Answer: 可以使用命令edit mysite / setting.py,它是一個普通的python模塊,模塊可代表Django進行設置。Django默認使用SQLite; 對於Django用戶來說這很方便,因為不需要任何其他類型的安裝。如果您的資料庫選擇不同,則必須使用DATABASE'default'項中的以下鍵來匹配您的資料庫的連接設置。
  • python連接印表機列印文檔、圖片、pdf文件等
    https://blog.csdn.net/kaspar1992/article/details/100088079 引言 python連接印表機進行列印,可能根據需求的不同,使用不同的函數模塊。
  • PostgreSQL函數
    在postgresql中,該查詢和普通的sql命令平等對待,即先替換變量名,同時也將該查詢的執行計劃緩存起來,以供後用。然而需要說明的是,遊標的打開和讀取必須在同一個事物內,因為在postgresql中,如果事物結束,事物內打開的遊標將會被隱含的關閉。
  • Python語言中字符串的拆分,連接及拼接(下篇)
    除了在連接字符串時添加空格外,不用做任何事情就可以大大提高輸出的可讀性。 在進行人機互動設計連接字符串,這一點您應該牢記住。.join( )方法非常巧妙,因為它只是在您想要加入的可迭代字符串之間插入你的「連接符」,而不是在可迭代的每個字符串的末尾添加連接符。 這意味著如果您傳遞的是一個大小為1的迭代器,您將看不到連接符:Python代碼:
  • PostgreSQL 10 新增特性
    (點擊上方公眾號,可快速關注)來源:oschinawww.oschina.net/news/83681/new-features-coming-in-postgresql
  • 手把手教你用Pycharm連接遠程Python環境
    滴滴雲 ubuntu 18.04版本,已經安裝好Anocondapycharm2019 專業版注:pycharm一定要專業版,只有專業版才有遠程連接pyth配置遠程python解釋器上述我們只是配置了遠程伺服器信息,但是並沒有讓pycharm指定python解釋器
  • postgresql email列表對NVM WAL BUFFER的討論
    [1]https://www.postgresql.org/message-id/83eafbfd-d9c5-6623-2423-7cab1be3888c%40iki.fi[2]https://www.postgresql.org/message-id/2aec6e2a-6a32-0c39-e4e2-aad854543aa8%40iki.fi[3] https