<rp id="kut09"><nav id="kut09"></nav></rp>
<rp id="kut09"></rp>
  • <tt id="kut09"></tt>
    <tt id="kut09"><tbody id="kut09"></tbody></tt>
    1. <u id="kut09"></u>
    2. <tt id="kut09"><noscript id="kut09"></noscript></tt>
    3. 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

      最新評論

      218彩票 www.fabkarts.com:攀枝花市| www.doubletmortgage.com:河津市| www.xianghongdian.com:肇州县| www.amb-eco.com:来宾市| www.6969t.com:安福县| www.polperrocornwall.com:永定县| www.scriedespretine.com:金溪县| www.283312.com:疏附县| www.lesblives.com:鄄城县| www.chimuwaza.com:侯马市| www.bhwwz.com:新蔡县| www.sacnakil.com:华安县| www.cn733.com:大新县| www.excelsisairways.com:龙岩市| www.goibm.com:禹城市| www.aiellocalabro.org:峨山| www.movieforhd.com:天峻县| www.supplementstestosterone.com:集贤县| www.suqinwood.com:巫溪县| www.cambiemosgalapagar.net:蓝田县| www.xlypw.cn:临夏市| www.agence-merevimmo.com:新和县| www.hg68345.com:随州市| www.tuestate.com:石楼县| www.bethesdauk.com:马山县| www.hjzrw.cn:娄底市| www.ashvieducation.com:许昌市| www.ds779.com:南京市| www.gillysnow.com:丰镇市| www.carahedgepeth.com:宜宾县| www.wateric-valve.com:泰顺县| www.hunantailift.com:裕民县| www.oasis-labs.com:固安县| www.themarie.org:缙云县| www.f5659.com:阳江市| www.5i7du.com:色达县| www.zgskx.com:兴义市| www.abdulkafi.com:夹江县| www.face53.com:揭西县| www.thebox-ny.com:万源市| www.cp9663.com:泗洪县| www.cxpzc.cn:漳浦县| www.cccmw.com:沂水县| www.aw368.com:萍乡市| www.bloggerjomblo.com:呼玛县| www.bakedandbranded.com:仙游县| www.mathtuition.org:瑞丽市| www.czjz123.com:夏津县| www.medicalspaofrye.com:新绛县| www.shyhdt1688.com:蓝田县| www.shyhdt1688.com:余干县| www.crowdcomputingblog.com:新竹县| www.70088j.com:平和县| www.asscing.com:小金县| www.fcgoo.com:牟定县| www.societyofweddingplanners.com:岳西县| www.baby-photos.net:江北区| www.alpost120.org:佛山市| www.jlsmasonry.com:周至县| www.mancharus.com:沙田区| www.mai0565.com:本溪| www.jsahs.com:马龙县| www.ku6s.com:双流县| www.chinesedrywallinspect.com:堆龙德庆县| www.agence-nad.com:桓仁| www.xmsmly.com:荣成市| www.hjzrw.cn:阳高县| www.wsr7.com:治多县| www.myomahaphysicaltherapy.com:中阳县| www.tootoomarket.com:剑川县| www.lidande.com:密云县| www.92top10.com:庆云县| www.nndgw8.com:肇庆市| www.kashoubangzongdai.com:崇明县| www.oxford2cambridge.net:华蓥市| www.hibibhoora.com:唐海县| www.jllnt.com:永嘉县| www.brandshoesbar.com:叙永县| www.ab-mc.com:临湘市| www.523962.com:修文县| www.tecnoconfundido.org:五台县| www.rotaryclubstpete.com:天津市| www.parametercontraption.com:宝应县| www.desiessence.com:玉门市|