先利用pip安装pymssql库
pip install pymssql
具体连接、测试代码:
# server默认为127.0.0.1,如果打开了TCP动态端口的需要加上端口号,如\'127.0.0.1:1433\' # user默认为sa # password为自己设置的密码 # database为数据库名字 server = \'127.0.0.1\' user = \"sa\" password = \"123456\" database = \"pubs\" conn = pymssql.connect(server, user, password, database) # 可简化为conn = pymssql.connect(host=\'localhost\', user=\'sa\', password=\'123456\', database=\'pubs\') cursor = conn.cursor() cursor.execute(\'SELECT * FROM titles\') print( cursor.fetchall() ) # 如果用pandas读取数据库 import pymssql import pandas as pd conn = pymssql.connect(\'IP地址\',\'账号\',\'密码\',\'数据库\') sql_1 = \"SELECT Id,creat_time from 表名\" #利用pandas直接获取数据\" data = pd.read_sql(sql_1, conn) conn.close() print(data)
封装好的版本:
#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(): # host默认为127.0.0.1,如果打开了TCP动态端口的需要加上端口号,如\'127.0.0.1:1433\' # user默认为sa # pwd为自己设置的密码 # db为数据库名字 ms = MSSQL(host=\'127.0.0.1\',user=\"sa\",pwd=\"123456\",db=\"pubs\") resList = ms.ExecQuery(\"SELECT * FROM titles\") print(resList) if __name__ == \'__main__\': main()
如果出现pymssql.OperationalError: (20009, b\’DB-Lib error message 20009, severity 9:\\nUnable to connect: Adaptive Server is unavailable or does not exist (SZS\\SQLEXPRESS)\\n\’)类似保错,有以下几个可能的原因:
1.数据库名字写错
2.tcp/ip协议未开启,这个位于(右键此电脑,点击管理,点击服务与应用程序,点击sql配置管理器,点击sql server网络配置,点击mssqlserver的协议,右键tcp/ip,点击启用,重启电脑后才会生效)
3.动态端口错误,默认是没有打开动态端口的,如果打开了就需要写端口号,在2中的tcp/ip协议中查看动态端口号,点击tcp/ip协议,点击ip地址,然后翻到最下面,找到ipall 里面的动态端口号,也可以将动态端口号删掉,然后不写
4.sa用户登录未启用
打开sql server management studio,点击安全性,点击登录名,如果sa项出现红色的×则说明sa用户登录未启用,右键sa点击属性,点击状态即可启用。
© 版权声明
THE END
暂无评论内容