python连接sql server乱码的解决方法
admin
2023-07-31 02:03:07
0

vi /etc/freetds/freetds.conf

复制代码 代码如下:
[global]
# TDS protocol version
tds version = 8.0
client charset = UTF-8
# A typical Microsoft server
[Server55]
host = 192.168.1.55
port = 1433
tds version = 8.0
vi /etc/odbc.ini
[DSN55]
Description=my dsn
Driver=TDS
Database=qq99
Servername=Server55

tsql -S Server55 -U qq -P 123456 -D qq99
复制代码 代码如下:
#coding=utf-8
#!/usr/bin/python
import pyodbc
cnxn = pyodbc.connect(\”DSN=DSN55;UID=qq;PWD=123456\”)
cursor = cnxn.cursor()
cursor.execute(\’select * from orders where username=?\’,\’qq\’)
a=cursor.fetchall()
print \’pyodbc\’,a

关闭连接:
复制代码 代码如下:
csr.close()
del csr
conn.close()

python 使用pymssql连接sql server数据库

复制代码 代码如下:
#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\”)

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...