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