python 使用pymssql连接sql server数据库

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
#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,如需转载请自行联系原作者。
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
10 0
|
2天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
7天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
129 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
7天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
27 6
|
5月前
|
SQL Oracle 关系型数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
142 0
|
SQL 程序员 数据库
【python】连接sql server数据库,并实现简单的增删改查(1)
Python编程语言越来越受到大家的喜爱,本篇文章就从链接微软数据库进行增删改查操作的讲解
526 0
|
SQL 数据库连接 数据库
Qt实用技巧:Qt连接SQL Server数据库(需要配置ODBC)
Qt实用技巧:Qt连接SQL Server数据库(需要配置ODBC)
|
3月前
|
SQL 关系型数据库 数据库连接
Python 连接 SQL 数据库 -pyodbc
以下是如何在 Python 中使用 pyodbc 连接到 SQL 数据库的基本步骤和详解
52 0
|
4月前
|
SQL 数据库连接 数据库
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
97 0