<font id="nc9yk"></font>
  • <tt id="nc9yk"></tt>
          <rp id="nc9yk"><optgroup id="nc9yk"></optgroup></rp>
          <tt id="nc9yk"><form id="nc9yk"></form></tt>

            <cite id="nc9yk"></cite>

            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

            最新評論

            hao500彩票 www.gamezhuan8.com:城口县| www.blueknightspavi.com:永嘉县| www.cp6335.com:上高县| www.asenim.org:社旗县| www.sweetarch.com:石渠县| www.bleedingblack.com:江安县| www.brochesyalfileres.com:澎湖县| www.cwsgw.cn:从江县| www.mortalgames.net:焦作市| www.used-staticcaravans.com:浏阳市| www.dennisforhire.com:偏关县| www.ezkertza.com:合川市| www.brandshoesbar.com:大同县| www.simonsapartments.com:安塞县| www.howsvps.com:五峰| www.gutajiao.com:冀州市| www.poboyzbarandgrill.com:泗水县| www.cn-ourui.com:宁明县| www.resortprincipidipiemonte.com:襄汾县| www.3qrsw.com:永康市| www.40photography.com:榆林市| www.pornofilmid.net:蓬安县| www.czjyhl-sy.com:昆明市| www.asksworld.com:娄底市| www.grammylist.org:霞浦县| www.szjiruicctv.com:鹤岗市| www.xrwjw.cn:千阳县| www.alinadeemamin.com:萨迦县| www.hg70345.com:方正县| www.iidcs.com:武山县| www.cigdemyartasi.com:鱼台县| www.pokerglyphs.com:杭锦后旗| www.spjjs.com:武隆县| www.beijingxinxin.com:宜阳县| www.desertridgesuperblock7north.com:大庆市| www.ourmanufacturers.com:东城区| www.carouselshow.com:广昌县| www.4sqsu.com:彭州市| www.c-c-creekside.com:措美县| www.mushroompipe.com:青海省| www.tudoparacelular.com:卢龙县| www.news2come.com:南皮县| www.asramled.com:邮箱| www.maizuyupen.com:岑巩县| www.870hk.com:栖霞市| www.hg19345.com:天长市| www.hg01678.com:海安县| www.fpzjzx.com:玛纳斯县| www.131716.com:定日县| www.chinaghjy.com:鹿邑县| www.723421.com:体育| www.lool82.com:东兴市| www.3iiiii.com:东乌珠穆沁旗| www.jinglongbj.com:繁峙县| www.ao-to-ao.com:大新县| www.firmarehberisitesi.com:故城县| www.bestfoodsrecipe.com:横峰县| www.junchidt.com:炎陵县| www.jinda109.com:嘉祥县| www.208650.com:景洪市| www.f7552.com:拜城县| www.qunfengdesign.com:吉林省| www.thedrugtest.net:通州市| www.jnddq.com:新乐市| www.ccequinephotography.com:左云县| www.zuyiku.com:滦南县| www.dywanliqizhong.com:井陉县| www.rxsm999.com:玛沁县| www.52syn.com:萨嘎县| www.jjmatransportation.com:龙山县| www.charitybackpackers.com:北碚区| www.ikemax.com:宁蒗| www.aluminumcane.com:聊城市| www.brochesyalfileres.com:博野县| www.mjdxxss.com:东阿县| www.s9692.com:绿春县| www.soundandvisionmex.com:宝山区| www.szmlde.com:界首市| www.mejoresamigas.net:甘孜县| www.s-program.com:嘉峪关市| www.imeldats.com:兴化市| www.jgdzj.com:大化| www.artpairs.com:凤庆县| www.ahlikartu.com:襄樊市|