博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 使用pymssql连接sql server数据库
阅读量:7067 次
发布时间:2019-06-28

本文共 2431 字,大约阅读时间需要 8 分钟。

#coding=utf-8 
#!/usr/bin/env python
#-------------------------------------------------------------------------------
# Name: pymssqlTest.py
# Purpose: 测试 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
#
# Author: scott
#
# Created: 04/02/2012
#-------------------------------------------------------------------------------
import pymssql
class MSSQL
:
    
""
"
    对pymssql的简单封装
    pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
    使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启
    用法:
    "
""
    
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的元素是每行记录的字段
        调用示例:
                ms = MSSQL(host="
localhost
",user="sa
",pwd="
123456
",db="PythonWeiboStatistics
")
                resList = ms.ExecQuery("
SELECT 
id,NickName FROM WeiBoUser
")
                for (id,NickName) in resList:
                    print str(id),NickName
        "
""
        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="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
## #返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
## ms.ExecNonQuery("insert into WeiBoUser values('2','3')")
    ms 
= MSSQL(host
=
"localhost",user
=
"sa",pwd
=
"123456",db
=
"PythonWeiboStatistics")
    resList 
= ms.ExecQuery(
"SELECT id,weibocontent FROM WeiBo")
    
for (
id,weibocontent) 
in resList
:
        
print 
str(weibocontent).decode(
"utf8")
if 
__name__ 
== 
'__main__'
:
    main()
 
 
注意事项:
    
使用pymssql进行中文操作时候可能会出现中文乱码,我解决的方案是:
    • 文件头加上 #coding=utf8
    • sql语句中有中文的时候进行encode
         insertSql 
      = 
      "insert into WeiBo([UserId],[WeiBoContent],[PublishDate]) values(1,'测试','2012/2/1')".encode(
      "utf8")
    •  
      连接的时候加入charset设置信息
          pymssql.connect(host
      =
      self.host,user
      =
      self.user,password
      =
      self.pwd,database
      =
      self.db,charset
      =
      "utf8")
本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/p/3188756.html,如需转载请自行联系原作者。
你可能感兴趣的文章
Spark学习笔记——基于MLlib的机器学习
查看>>
数据结构(Java语言)——Stack简单实现
查看>>
JAVA开发中文乱码的几个解决方案
查看>>
sql server 游标continue,总是死循环
查看>>
C 标准库 - <stdarg.h>
查看>>
Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
查看>>
交换数据
查看>>
百度地图 放大或缩小后 中心点偏移(中心点不是在放大前的点)
查看>>
vlc播放rtsp之怪事
查看>>
MyBatis学习总结(一)——ORM概要与MyBatis快速起步
查看>>
SQLSERVER 2012 之 “代理 XP”组件已作为此服务器安全配置的一部分被关闭
查看>>
WebSocket异步通讯,实时返回数据实例
查看>>
Django 版本对应的 Python 版本
查看>>
docker-swarm建立本地集成开发环境
查看>>
MySQL下全文索引
查看>>
SQL Server 作业同步
查看>>
10 个最酷的 Linux 单行命令 — LinuxTOY
查看>>
left join
查看>>
一起谈.NET技术,Microsoft Ribbon for WPF 正式发布
查看>>
android如何拍照以及返回拍的图片(经过验证的实际例子)
查看>>