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

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

#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")

转载地址:http://curda.baihongyu.com/

你可能感兴趣的文章
厦门关区去年对台进出口达634.3亿元
查看>>
香港冬季流感肆虐 急症室求诊人数6751人次创新高
查看>>
记一次递归在我项目中所发挥的作用
查看>>
如何让 fixed 定位的导航条可横向滚动?
查看>>
Swift iOS : 监视字段变化的方法
查看>>
精读《async/await 是把双刃剑》
查看>>
Android P 应用兼容常见错误及建议
查看>>
[译]Android 生命周期备忘录 — 第一部分:单一 Activities
查看>>
Android内存泄露浅析
查看>>
【Android】仿斗鱼滑动拼图验证码控件
查看>>
让 UIWebview 拥有超强的图片处理能力
查看>>
异步社区本周(5.14-5.20)半价电子书
查看>>
Xcode 高级调试技巧
查看>>
理解DDoS防护本质:基于资源较量和规则过滤的智能化系统
查看>>
js 中基础数据结构数组去重问题
查看>>
Android Gradle(一)为什么现在要用Gradle?
查看>>
Python 简单入门指北(试读版)
查看>>
技术变化那么快,程序员如何做到不被淘汰?
查看>>
虚拟DOM总结
查看>>
阿里资深技术专家总结:要怎样努力才可以成为公司主力架构师
查看>>