亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python 學習 第十八篇:使用pymssql操作SQL Server數據庫

系統 2312 0

使用pymssql模塊操作SQL Server數據庫

一,連接數據庫

使用pymssql連接SQL Server數據庫,首先創建連接和游標:

            
              import
            
            
               pymssql

conn 
            
            = pymssql.connect(host=
            
              '
            
            
              host
            
            
              '
            
            ,user=
            
              '
            
            
              user
            
            
              '
            
            ,password=
            
              '
            
            
              pwd
            
            
              '
            
            ,database=
            
              '
            
            
              db_name
            
            
              '
            
            
              )
cursor 
            
            = conn.cursor() 
          

1,行的格式

當執行select語句獲取數據時,返回的數據行有兩種格式:元組和字典,行的默認格式是元組。pymssql返回的數據集的格式是在創建游標時設置的,當參數 as_dict為True時,返回的行是字典格式,該參數的默認值是False,因此,默認的行格式是元組。

            cursor = conn.cursor(as_dict=True) 
          

2,執行查詢

使用游標執行SQL語句

            cursor.execute(
            
              "
            
            
              sql statement
            
            
              "
            
            ) 
          

3,提交事務

當執行更新操作時,需要顯式調用 commit()函數來提交事務:

            conn.commit()
          

如果事務執行失敗,可以回滾事務:

            conn.rollback()
          

4,關閉連接,釋放資源

            conn.close()
          

二,更新數據

對數據庫有查詢,更新和新增操作,在更新和插入數據時,需要顯式提交事務。當需要更新數據時,調用游標的execute()函數執行SQL命令來實現:

            
              Cursor.execute(operation)
Cursor.execute(operation, params)
            
          

如果要在一個事務中執行多條SQL命令,可以調用游標的executemany()函數:

            Cursor.executemany(operation, params_seq)
          

1,執行數據更新和刪除

通過游標的execute()函數來執行TSQL語句,調用 commit() 來提交事務

            cursor.execute(
            
              """
            
            
              
sql statement

            
            
              """
            
            
              )  

conn.commit()
            
          

2,執行數據的多行插入

如果需要插入多條記錄,可以使用游標的executemany()函數,該函數包含模板SQL 命令和一個格式化的參數列表,用于在一條事務中插入多條記錄:

            args=[(1, 
            
              '
            
            
              John Smith
            
            
              '
            
            , 
            
              '
            
            
              John Doe
            
            
              '
            
            
              ),
     (
            
            2, 
            
              '
            
            
              Jane Doe
            
            
              '
            
            , 
            
              '
            
            
              Joe Dog
            
            
              '
            
            
              ),
     (
            
            3, 
            
              '
            
            
              Mike T.
            
            
              '
            
            , 
            
              '
            
            
              Sarah H.
            
            
              '
            
            
              )]

cursor.executemany(
            
            
              "
            
            
              INSERT INTO persons VALUES (%d, %s, %s)
            
            
              "
            
            
              , args )
conn.commit()
            
          

三,遍歷數據

當從SQL Server數據庫中獲取數據時,可以使用fetchone()從結果集中提取一條記錄,使用fetchmany()從結果集中提取多條記錄,或使用fetchall()提取全部結果集:

            cursor.fetchone()           
            
              #
            
            
               return a row (a tuple or a dict) if as_dict was passed to pymssql.connect()
            
            
cursor.fetchmany(size=None) 
            
              #
            
            
               return a list of tuples or dicts if as_dict was passed to pymssql.connect() 
            
            
cursor.fetchall()           
            
              #
            
            
               return a list of tuples or dicts if as_dict was passed to pymssql.connect()
            
          

由于游標是一個迭代器,因此,可以使用for語句以迭代方式逐行處理查詢的結果集。

            
              for
            
             row 
            
              in
            
             cursor:
          

1,以元組方式遍歷數據

返回的結果集中,每一行都是一個元組:

            cursor=
            
              connect.cursor()
cursor.execute(
            
            
              '
            
            
              SELECT * FROM persons WHERE salesrep=%s
            
            
              '
            
            , 
            
              '
            
            
              John Doe
            
            
              '
            
            
              )

            
            
              for
            
             row 
            
              in
            
            
               cursor:
    
            
            
              print
            
            (
            
              '
            
            
              row = %r
            
            
              '
            
             % (row,))
          

2,以字典方式遍歷數據

返回的結果集,每一行是一個字典結構:

             cursor = conn.cursor(as_dict=
            
              True)
 cursor.execute(
            
            
              '
            
            
              SELECT * FROM persons WHERE salesrep=%s
            
            
              '
            
            , 
            
              '
            
            
              John Doe
            
            
              '
            
            
              )
 
            
            
              for
            
             row 
            
              in
            
            
               cursor:
     
            
            
              print
            
            (
            
              "
            
            
              ID=%d, Name=%s
            
            
              "
            
             % (row[
            
              '
            
            
              id
            
            
              '
            
            ], row[
            
              '
            
            
              name
            
            
              '
            
            ]))
          

四,關閉連接

在一個連接中,可以提交多個事務,當查詢完成之后,一定要關閉連接:

            conn.close()
          

通常情況下,使用with來自動關閉連接:

            
              import
            
            
               pymssql 
 
with pymssql.connect(server, user, password, 
            
            
              "
            
            
              db_name
            
            
              "
            
            
              ) as conn:
    with conn.cursor(as_dict
            
            =
            
              True) as cursor:  
        cursor.execute(
            
            
              '
            
            
              SELECT * FROM persons WHERE salesrep=%s
            
            
              '
            
            , 
            
              '
            
            
              John Doe
            
            
              '
            
            
              )
        
            
            
              for
            
             row 
            
              in
            
            
               cursor:
            
            
            
              print
            
            (
            
              "
            
            
              ID=%d, Name=%s
            
            
              "
            
             % (row[
            
              '
            
            
              id
            
            
              '
            
            ], row[
            
              '
            
            
              name
            
            
              '
            
            ]))
          

?

參考文檔:

pymssql reference

Python中從SQL型數據庫讀寫dataframe型數據


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产波多野结衣中文在线播放 | 国产69精品久久久久999三级 | 愉拍精品视频在线观看 | 久久精品色 | 亚洲国产九九精品一区二区 | 第一福利视频网 | 欧美日本高清视频在线观看 | 香蕉在线网站 | 中文字幕久久综合 | 最新国产麻豆精品 | zzz色| 夜夜橹 | 国产在线播放成人免费 | 97精品国产自在现线免费 | 亚洲综合色秘密影院秘密影院 | 午夜成人在线视频 | 好爽毛片一区二区三区四区 | 美女毛片 | 国产精品久久自在自2021 | 久久午夜伦理 | 九九99九九精彩网站 | 国产99青草全福视在线 | 99久久免费国产香蕉麻豆 | 九九热观看视频 | 国产在线短视频 | 综合激情五月婷婷 | 色综合久久91 | 国产精品免费一级在线观看 | 日本人一级毛片免费完整视频 | 日韩欧美国产高清 | 欧美一区二区在线播放 | 成视频年人黄网站免费视频 | 中文字幕一视频97色伦 | 日韩 欧美 国产 亚洲 中文 | 丁香狠狠 | 成人亚洲欧美日韩在线观看 | 成人亚洲网 | 亚洲二区视频 | 欧美顶级毛片在线播放 | 国产三级做爰在线播放最爱 | 99久久国产综合精品女不卡 |