<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.nicolasbessol.com:当阳市| www.videodownloadming.com:怀集县| www.crystaltunisia.com:临澧县| www.daliancreation.com:镇雄县| www.classes2go.com:白沙| www.happyholiday-gd.com:府谷县| www.bjhbyhdx.com:布拖县| www.hisfountain.net:临湘市| www.lechuang-cable.com:山东省| www.jstlhg.com:阳曲县| www.wearetsk.com:工布江达县| www.wpudining.com:宣恩县| www.jas-cn.com:南汇区| www.sitegrindermastery.com:高邑县| www.qzxihu.com:来宾市| www.pinksterfeest.org:吴桥县| www.suixicom.com:邵阳市| www.0459d.com:普定县| www.dibangjiaju.com:英吉沙县| www.nordea-im.com:松阳县| www.sadosanmakina.com:南丹县| www.toreadmoto.com:当阳市| www.takwed.com:拜城县| www.dominatanja.com:新建县| www.eoilc.com:吉水县| www.zhiminjia.com:阳谷县| www.wrenandlark.net:清流县| www.wmeiyi888.com:凤城市| www.earmaps.com:威宁| www.thanlula.com:广德县| www.utahsbusinessdirectory.com:永新县| www.sl869.com:平山县| www.qdsej.com:平南县| www.taiconsult.com:铁岭县| www.abrasys.com:炎陵县| www.brosway-gioielli-it.com:翁牛特旗| www.saybelfld.com:吉安市| www.274758.com:南乐县| www.0757xj.com:南阳市| www.jlxkc.com:从江县| www.zd676.com:仲巴县| www.leominstersba.com:棋牌| www.esfhera.com:西和县| www.takwed.com:大理市| www.tridentmed.org:灵宝市| www.beardiac.com:新昌县| www.wxyanjin.com:安新县| www.javadshadkam.com:庄浪县| www.bestcasinoslot.net:扎鲁特旗| www.edcvanuatu.com:台江县| www.zazenint.com:辽阳县| www.appletwig.com:绥滨县| www.elitetrainingca.com:鄂托克前旗| www.15590742199.com:卓尼县| www.christoph-behrmann.com:大理市| www.kitchentechnique.net:遂昌县| www.rqxbw.cn:东光县| www.ehsggs.com:高密市| www.sdwlcc.com:泽库县| www.lacettiid.com:乡宁县| www.pc800buysell.org:佳木斯市| www.gzgwg.com:丽水市| www.f8r8.com:淮南市| www.zjyxgs.com:德州市| www.wwwhg8194.com:平乐县| www.navarrosent.com:资源县| www.dulqiuwangzhan678.com:华蓥市| www.devrealem.com:谷城县| www.carousel-ride.com:桃源县| www.versign-grs.com:冷水江市| www.beautyonstage.com:烟台市| www.masjixie.com:隆德县| www.rh2010.com:罗江县| www.ninenetwork.net:北安市| www.new-taxi.com:汉寿县| www.www2246v.com:克什克腾旗| www.shahnawazenterprises.com:上饶县| www.gjjjsq.com:西充县| www.1jiazhuang.com:绩溪县| www.thailandelitevisa.org:荣成市| www.126youxiang.com:犍为县| www.pazarlamaturkiye.net:黄大仙区| www.ypyqw.cn:桂林市| www.americanbeautiesnationalpageants.com:大洼县|