pyodbc连接SQL Server出现中文乱码问题的解决方案

原创 2013年05月17日 16:44:08

添加一个配置参数unicode_results=True

pyodbc.connect(connStr,unicode_results=True)

资料(摘自http://code.google.com/p/pyodbc/wiki/Module):

connect

connect(*connectionstring, **kwargs) --> Connection

Creates and returns a new connection to the database.

The optional connection string can be passed as a string or Unicode object (connectionstring), as keywords (kwargs), or both.

# a string
cnxn = connect('driver={SQL Server};server=localhost;database=test;uid=me;pwd=me2')
# keywords
cnxn = connect(driver='{SQL Server}', server='localhost', database='test', uid='me', pwd='me2')
# both
cnxn = connect('driver={SQL Server};server=localhost;database=test', uid='me', pwd='me2')

The DB API recommends some keywords that are not usually used in ODBC connection strings, so they are converted:

from converted to
host server
user uid
password pwd

Some keywords are used by pyodbc and are not passed to the odbc driver:

keyword description default
autocommit If False, Connection.commit must be called; otherwise each statement is automatically commited False
ansi If True, the driver does not support Unicode and SQLDriverConnectA should be used False
unicode_results If True, strings returned in result sets are always Unicode (2.1.5+) False
readonly If True, the connection is set to readonly False

The ansi keyword should only be used to work around driver bugs. pyodbc will determine if the Unicode connection function (SQLDriverConnectW) exists and always attempt to call it. If the driver returns IM001 indicating it does not support the Unicode version, the ANSI version is tried (SQLDriverConnectA). Any other SQLSTATE is turned into an exception. Setting ansi to true skips the Unicode attempt and only connects using the ANSI version. This is useful for drivers that return the wrong SQLSTATE (or if pyodbc is out of date and should support other SQLSTATEs).

For help on connection strings, see ConnectionStrings


解决使用Pyodbc向MSSQL插入unicode字符乱码的问题

——这个问题烦扰了我将近3个星期。 重要提醒:想看解决方案的直接拖到最后,这中间的过程,急性子的人可以不用看。 问题描述: 现有: 1. unicode字符串:a = "测试" ;...
  • samed
  • samed
  • 2016年01月19日 00:03
  • 2146

pyodbc访问数据库(python ODBC访问数据库)

python通过ODBC访问数据库。使用pyodbc,快速达成目标
  • supperman_009
  • supperman_009
  • 2016年07月08日 17:34
  • 6943

Python连接数据库-pyodbc

1、连接sql server: conn_info = 'DRIVER={SQL Server};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s'%(database, ho...
  • meylovezn
  • meylovezn
  • 2014年06月20日 10:42
  • 12529

pyodbc模块简单总结整理

连接到数据库 调用connect方法并传入ODBC连接字符串,其会返回一个connect对象。通过connect对象,调用cursor()方法,可以获取一个游标cursor。如下代码示例: i...
  • u010541307
  • u010541307
  • 2016年10月20日 22:11
  • 2008

pyodbc访问数据库(python ODBC访问数据库)

python通过ODBC访问数据库。使用pyodbc,快速达成目标
  • supperman_009
  • supperman_009
  • 2016年07月08日 17:34
  • 6943

在SQL Server 2005(2008)中用T-SQL插入中文数据时出现的问号或乱码的解决方案

病症表现为:主要表现为用 T-SQL 语句插入中文数据时数据库显示全是问号“???” 解决办法: 第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对...
  • Feng______
  • Feng______
  • 2011年11月08日 21:21
  • 1076

PLSQL中文乱码问题解决方案

  • 2015年06月05日 10:17
  • 847B
  • 下载

Ajax中文乱码问题解决方案

  • 2012年09月18日 11:03
  • 1KB
  • 下载

get方式传参中文乱码问题的解决方案

  • 2017年07月20日 10:28
  • 2KB
  • 下载

java中MySQL中文乱码问题解决方案

  • 2014年04月14日 16:54
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pyodbc连接SQL Server出现中文乱码问题的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)