Python pymssql實現SQL Server數據庫的增刪改查


pymssql文檔地址

http://www.pymssql.org/en/stable/

基本的增刪改查

# -*- coding:utf-8 -*-

import pymssql

class MSSQL:
    def __init__(self,host,user,pwd,db):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db
    #連接數據庫
    def __GetConnect(self):
        if not self.db:
            raise(NameError,"沒有設置數據庫信息")
        self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
        cur = self.conn.cursor()
        if not cur:
            raise(NameError,"連接數據庫失敗")
        else:
            return cur
    #查詢語句
    def ExecQuery(self,sql):
        cur = self.__GetConnect()
        cur.execute(sql)
        resList = cur.fetchall()

        # 查詢完畢后必須關閉連接
        self.conn.close()
        return resList

    # 添加、更新、刪除

    def ExecNonQuery(self,sql):
        cur = self.__GetConnect()
        cur.execute(sql)
        self.conn.commit()
        self.conn.close()



#調用

if __name__ =="__main__":
    try:
        Ms=MSSQL(host=".0",user="sa",pwd="sa",db="test")
        reslist = Ms.ExecQuery("select * from webuser")#webuser 表名
        newsql = "update webuser set name='%s' where id=1" %u'測試'
        Ms.ExecNonQuery(newsql.encode('utf-8'))
    except Exception as e:
        print ('出錯:%s'%e)

使用with語句(上下文管理器)

您可以將Python with語句與連接和游標一起使用。這使您不必顯式關閉游標和連接。

with pymssql.connect(server, user, password, "tempdb") 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']))

調用存儲過程

with pymssql.connect(server, user, password, "tempdb") as conn:
    with conn.cursor(as_dict=True) as cursor:
        cursor.execute("""
        CREATE PROCEDURE FindPerson
            @name VARCHAR(100)
        AS BEGIN
            SELECT * FROM persons WHERE name = @name
        END
        """)
        cursor.callproc('FindPerson', ('Jane Doe',))
        for row in cursor:
            print("ID=%d, Name=%s" % (row['id'], row['name']))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM