×

Python SQL SERVER

在windows下使用python3连接sqlserver

Kalet Kalet 发表于2019-05-10 16:45:15 浏览209 评论0

抢沙发发表评论

利用python连接sqlserver数据库,一开始总是出现错误。错误如下:


Traceback (most recent call last):

  File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734)

  File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821)

  File "_mssql.pyx", line 637, in _mssql.MSSQLConnection.__init__ (_mssql.c:6581)

  File "_mssql.pyx", line 1630, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524)


查阅了网上许多的博客。代码千篇一律,然而都是错的,也找不出原因,后来经过摸索,发现连接sqlserver时,不仅仅要输入主机ip,更要输入端口号,同时也要确定自己的sqlserver配置管理器中的tcp/ip协议处于开启状态,同时其中的本机ip 127.0.0.1也要处于活动状态。如图: 


更重要的是要找到IPAII的端口号。如图:


我发现每次电脑开机的端口号都不一样。本次是1544。 

知道这些后便可以写代码连接数据库了 

在IPython里输入:


>>> import pymssql

>>> pymssql.connect(host="127.0.0.1:1544",user="sa",password="写你的密码",database="写你要连接的数据库",charset="utf8")

<pymssql.Connection object at 0x031CEAF8>

>>> 

可以发现连接成功,并返回了一个对象地址值。 

大功告成,之后便可以对数据库进行数据操作。 

网上的封装代码如下:


#coding=utf-8 

# sqlserver的连接

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):

        """

        得到连接信息

        返回: conn.cursor()

        """

        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):

        """

        执行查询语句

        返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段


        """

        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()

        """

        cur = self.__GetConnect()

        cur.execute(sql)

        self.conn.commit()

        self.conn.close()


def main():


    ms = MSSQL(host="127.0.0.1:1541",user="sa",pwd="写你的密码",db="写你的数据库")

    resList = ms.ExecQuery("SELECT * FROM students")

    print(resList)


if __name__ == '__main__':

    main()


大概操作便是这样的。


原文:https://blog.csdn.net/wangbowj123/article/details/78513150 


群贤毕至

访客