Python连接SQL Server数据库 增删改查

 Pymssql使用

麻烦的是,经常安装失败。需要先下载包,再在本地进行安装。

pip install pymssql

传送门:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

可根据自己Python的版本来下载,之前安装Python3.7使用有些问题

安装pymssql:



pymssql对数据库的一些操作:

import pymssql

# server    数据库服务器名称或IP
# user      用户名
# password  密码
# database  数据库名称

server = "*******"
user = "sa"
password = "*******"
database = "Python"
conn = pymssql.connect(server, user, password, database)
cursor = conn.cursor()

# 新建表


def CreateTable():
    sql = """
    IF OBJECT_ID('persons', 'U') IS NOT NULL DROP TABLE persons
    CREATE TABLE persons (id INT NOT NULL identity(1,1),name VARCHAR(100),age int,PRIMARY KEY(id))
    """
    cursor.execute(sql)
    conn.commit()

# 批量插入数据


def InsertData():
    sql = "INSERT INTO persons(name,age) VALUES (%s, %d)"
    data = [
        ('zhangsan', 15),
        ('lisi', 16),
        ('wangwu T.', 17)]
    cursor.executemany(sql, data)
    # 如果没有指定autocommit属性为True的话就需要调用commit()方法
    conn.commit()

# 删除操作


def DeleteData():
    sql = "delete persons where id=5"
    cursor.execute(sql)
    conn.commit()

# 查询操作


def SelectTable():
    sql = "SELECT * FROM persons"
    cursor.execute(sql)
    row = cursor.fetchone()
    while row:
        print("ID=%d, Name=%s" % (row[0], row[1]))
        row = cursor.fetchone()
    # 也可以使用for循环来迭代查询结果
    # for row in cursor:
    #     print("ID=%d, Name=%s" % (row[0], row[1]))

# 修改操作


def UpdateData():
    sql = "update [persons] set name ='Python1' where id<3"
    cursor.execute(sql)
    conn.commit()


def main():
    # CreateTable()
    InsertData()
    DeleteData()
    UpdateData()
    SelectTable()
    conn.close()


if __name__ == '__main__':
    main()

# 关闭连接

  mssql_helper:

import pymssql

class MSSQL:
    def __init__(self,host,user,pwd,db): #类的构造函数,初始化数据库连接ip或者域名,以及用户名,密码,要连接的数据库名称
        self.host=host
        self.user=user
        self.pwd=pwd
        self.db=db
    def __GetConnect(self):  #得到数据库连接信息函数, 返回: conn.cursor()
        self.conn=pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset='utf8')
        cur=self.conn.cursor()  #将数据库连接信息,赋值给cur。
        if not cur:
            return(NameError,"连接数据库失败")
        else:
            return cur

    #执行查询语句,返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
    def ExecQuery(self,sql):  #执行Sql语句函数,返回结果
        cur = self.__GetConnect()   #获得数据库连接信息
        cur.execute(sql)  #执行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()

使用:

import mssql_helper

server = "********"
user = "sa"
password = "*********"
database = "Python"


mssql =""

def main():
    global mssql
    mssql = mssql_helper.MSSQL(server,user,password,database)

def test():
    rows = mssql.ExecQuery("SELECT * FROM persons")    
    print(rows)

if __name__ == '__main__':
    main()
    test()





猜你喜欢

转载自blog.csdn.net/qq_32688731/article/details/80513453