<tt id="eol1w"></tt>
  • Python操作PostgreSql數據庫的方法(基本的增刪改查)

     更新時間:2020年12月29日 16:02:51   作者:Mark Huo  
    這篇文章主要介紹了Python操作PostgreSql數據庫(基本的增刪改查),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

    Python操作PostgreSql數據庫(基本的增刪改查)

    操作數據庫最快的方式當然是直接用使用SQL語言直接對數據庫進行操作,但是偶爾我們也會碰到在代碼中操作數據庫的情況,我們可能用ORM類的庫對數控庫進行操作,但是當需要操作大量的數據時,ORM的數據顯的太慢了。在python中,遇到這樣的情況,我推薦使用psycopg2操作postgresql數據庫

    psycopg2

    官方文檔傳送門: http://initd.org/psycopg/docs/index.html

    簡單的增刪改查

    連接

    連接pg并創建表

    PG_SQL_LOCAL = {
     'database': 'postgres',
     'user': 'postgres',
     'password': "8dsa581",
     # 'host':'10.27.78.1',
     'host': 'localhost'
    }
    
    def connectPostgreSQL():
     conn = psycopg2.connect(**PG_SQL_LOCAL)
     print('connect successful!')
     cursor = conn.cursor()
     cursor.execute('''
     create table public.members(
     id integer not null primary key,
     name varchar(32) not null,
     password varchar(32) not null,
     singal varchar(128)
     )''')
     conn.commit()
     conn.close()
     print('table public.member is created!')

    一條一條的增加數據

    def insertOperate():
     conn = psycopg2.connect(**PG_SQL_LOCAL)
     cursor = conn.cursor()
     cursor.execute("insert into public.member(id,name,password,singal)\
    values(1,'member0','password0','signal0')")
     cursor.execute("insert into public.member(id,name,password,singal)\
    values(2,'member1','password1','signal1')")
     cursor.execute("insert into public.member(id,name,password,singal)\
    values(3,'member2','password2','signal2')")
     cursor.execute("insert into public.member(id,name,password,singal)\
    values(4,'member3','password3','signal3')")
     row = conn.fetchone()
     print(row)
     conn.commit()
     conn.close()
    
     print('insert records into public.memmber successfully')

    • fetchall() 一次性獲取所有數據
    • fetchmany() 一次值提取2000條數據(使用服務端的游標)
    def selectOperate():
     conn = psycopg2.connect(**PG_SQL_LOCAL)
     cursor = conn.cursor()
     cursor.execute("select id,name,password,singal from public.member where id>2")
     # rows = cursor.fetchall()
     # for row in rows:
     # print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3],)
    
     while True:
     rows = cursor.fetchmany(2000)
     if not rows:
      break
     for row in rows:
      # print('id=', row['id'], ',name=', row['name'], ',pwd=', row['pwd'], ',singal=', row['singal'],)
      rid,name,pwd,singal = row
      print(rid,name,pwd,singal)
      # print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], )
     conn.close()

    更新數據

    def updateOperate():
     conn = psycopg2.connect(**PG_SQL_LOCAL)
     cursor=conn.cursor()
     result = cursor.execute("update public.member set name='member X' where id=3")
     print(result)
     conn.commit()
     print("Total number of rows updated :", cursor.rowcount)
    
     cursor.execute("select id,name,password,singal from public.member")
     rows=cursor.fetchall()
     for row in rows:
     print('id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n')
     conn.close()

    刪除數據

    def deleteOperate():
     conn = psycopg2.connect(**PG_SQL_LOCAL)
     cursor = conn.cursor()
    
     cursor.execute("select id,name,password,singal from public.member")
     rows = cursor.fetchall()
     for row in rows:
     print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], '\n')
    
     print('begin delete')
     cursor.execute("delete from public.member where id=2")
     conn.commit()
     print('end delete')
     print("Total number of rows deleted :", cursor.rowcount)
    
     cursor.execute("select id,name,password,singal from public.member")
     rows = cursor.fetchall()
     for row in rows:
     print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], '\n')
     conn.close()

    補充,增加的字段帶有時間格式

    帶有時間格式是,只需要傳入時間格式的字符串(‘2017-05-27')即可,PG會自動識別

    cur.execute("INSERT INTO Employee "
      "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")
    # 查詢數據
    cur.execute("SELECT * FROM Employee")
    rows = cur.fetchall()
    for row in rows:
     print('name=' + str(row[0]) + ' address=' + str(row[1]) +
      ' age=' + str(row[2]) + ' date=' + str(row[3]), type(row[3]))
    
     # 插入數據
     sql = """INSERT INTO Employees VALUES(%s, %s, %s,%s) """
     var = []
     var.append([row[0], row[1], row[2], row[3]])
     cur.executemany(sql, var)
    
    # 提交事務
    conn.commit()
    
    # 關閉連接
    conn.close()

    到此這篇關于Python操作PostgreSql數據庫(基本的增刪改查)的文章就介紹到這了,更多相關Python操作PostgreSql數據庫內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

    相關文章

    • python正則表達式 匹配反斜杠的操作方法

      python正則表達式 匹配反斜杠的操作方法

      這篇文章主要介紹了python正則表達式 匹配反斜杠的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
      2020-08-08
    • python中lower函數實現方法及用法講解

      python中lower函數實現方法及用法講解

      在本篇文章里小編給大家整理的是一篇關于python中lower函數實現方法及用法講解內容,有需要的朋友們可以學習參考下。
      2020-12-12
    • python3+PyQt5實現自定義分數滑塊部件

      python3+PyQt5實現自定義分數滑塊部件

      這篇文章主要為大家詳細介紹了python3+PyQt5實現自定義分數滑塊部件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
      2018-04-04
    • pyqt5 QScrollArea設置在自定義側(任何位置)

      pyqt5 QScrollArea設置在自定義側(任何位置)

      這篇文章主要介紹了pyqt5 QScrollArea設置在自定義側(任何位置),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
      2019-09-09
    • Python‘==‘ 及 ‘is‘相關原理解析

      Python‘==‘ 及 ‘is‘相關原理解析

      這篇文章主要介紹了Python‘==‘ 及 ‘is‘相關原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
      2020-09-09
    • python中count函數簡單的實例講解

      python中count函數簡單的實例講解

      在本篇文章里小編給大家整理了關于python中count函數簡單的實例講解,有興趣的朋友們可以參考下。
      2020-02-02
    • python檢測IP地址變化并觸發事件

      python檢測IP地址變化并觸發事件

      這篇文章主要為大家詳細介紹了python檢測IP地址變化并觸發事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
      2018-12-12
    • Python3利用print輸出帶顏色的彩色字體示例代碼

      Python3利用print輸出帶顏色的彩色字體示例代碼

      用Python寫命令行程序的時候,單一的輸出顏色太單調了,所以下面這篇文章主要給大家介紹了關于Python3利用print輸出帶顏色的彩色字體的相關資料,需要的朋友可以參考下
      2019-04-04
    • docker-py 用Python調用Docker接口的方法

      docker-py 用Python調用Docker接口的方法

      今天小編就為大家分享一篇docker-py 用Python調用Docker接口的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
      2019-08-08
    • Selenium alert 彈窗處理的示例代碼

      Selenium alert 彈窗處理的示例代碼

      這篇文章主要介紹了Selenium alert 彈窗處理的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
      2020-08-08

    最新評論

    盈利国际彩票 www.jma360.com:阿克陶县| www.chateaudumarteray.com:德昌县| www.cantastorie05.com:乌兰浩特市| www.anhkhieudam.com:南部县| www.alida-hisku.net:金堂县| www.truboot.com:阳新县| www.yr597.com:长海县| www.soft-file.org:霍林郭勒市| www.booksrev.com:宁国市| www.s7765.com:黔南| www.jinshayule53.com:龙山县| www.nbyxkg.com:临江市| www.jordanegasc.com:犍为县| www.biosourcepharm.com:宁都县| www.rareearthsoil.com:吴堡县| www.poengun.com:鹤岗市| www.airshipapperal.com:北海市| www.ab-mc.com:玉屏| www.dm070.com:临泽县| www.aggielandmarks.com:济阳县| www.justintoy.com:来凤县| www.eoilc.com:修文县| www.quangvinhexpress.com:宜川县| www.hg74678.com:福贡县| www.harbourpointcoa.com:四平市| www.tradeb2bdirectory.com:荥阳市| www.tgase.com:镇江市| www.bestpicsforyou.com:阜阳市| www.dywanliqizhong.com:乌拉特中旗| www.top10logo.com:孝义市| www.bzsoft.org:措美县| www.liuxiaozhou.com:宣城市| www.zshxyl.com:育儿| www.mulama.com:高州市| www.amnestyforanimals.org:尚志市| www.cp2110.com:广安市| www.lixiaoqiu.com:漠河县| www.vacationsmaker.com:邓州市| www.yiyuanjinshu.com:华池县| www.hu31.com:泾阳县| www.m2676.com:鞍山市| www.aobento.com:平邑县| www.010wg.com:凭祥市| www.phoenix-nr.com:柞水县| www.alinadeemamin.com:正定县| www.cursosrioja.com:漳州市| www.aluminumcane.com:当涂县| www.wugongjie.com:黎城县| www.szmulinsen.com:四会市| www.hbresourcess.com:汝南县| www.love0534.com:鹤岗市| www.ylsqsly.com:巫溪县| www.sx888fc.com:呼玛县| www.99069ll.com:古浪县| www.nz337.com:定安县| www.yumugift.com:汽车| www.trackallpackages.net:青阳县| www.polish-translator.org:保山市| www.lakehousemitchell.com:富裕县| www.ascendingwings.com:秭归县| www.feel-fi.com:诸城市| www.fieldsue.com:汤阴县| www.ystsclq.com:治县。| www.hg345999.com:赤水市| www.z9867.com:洱源县| www.tootoomarket.com:新龙县| www.biosourcepharm.com:从化市| www.598729.com:平远县| www.ningmengwl.com:晴隆县| www.modernmosesclothingcompany.com:报价| www.bisutekirevere.com:铜梁县| www.kk43kk.com:滁州市| www.maskanshomal.com:嘉义市| www.0790sf.com:灵川县| www.karimjavadi.com:收藏| www.dlhxsk.com:山西省| www.hy2566.com:祁东县| www.curtisdemarce.com:厦门市| www.cdtnjx.com:上杭县| www.jstlhg.com:安丘市| www.gb-intercorp.com:蓝山县| www.wwued.com:雷波县| www.drugs-rx.com:开江县| www.nndgw8.com:海口市|