这个东西,不支持中文,大家注意。
环境为SQLServer2008,python3.3.2
数据库引擎为本地。
按照一般的连接方法,当数据库名称为英文时,比如Test,
使用连接语句:
conn = pymssql.connect(‘host’, 'sa', '123456', 'Test') # 可以轻松连接,数据引擎是host,数据库名称为Test
但是如果数据库名称使用的中文,比如'测试'
一开始觉得不支持中文太不可思议,网上查了下,很多人说使用编码设置,实际的结果是:
conn = pymssql.connect(‘host’, 'sa', '123456', '测试', charset = 'utf-8') # 无法连接
conn = pymssql.connect(‘host’, 'sa', '123456', '测试', charset="gb2312") # 无法连接
conn = pymssql.connect(‘host’, 'sa', '123456', '测试', charset="cp936") # 程序崩溃——我是用python3环境。
猜测是由于我的python使用的是3.0+的版本,所以导致了2.7能够用的方法在3.0下不起作用。
注意,我这里说的是数据库的名字,而不是表的名字。表应该还是支持中文的。
而python2.7应该也是有方法支持中文的。
总之,如果环境跟我一样,留意一下好了。可以换用ODBC,直接的可以把数据库名称改为英文名字更加方便。
不支持中文表名,表面上看是程序员的错误,实际上深层次的东西,看一下同样作为数据库连接的ODBC的处理,就明白:
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 |
unicode,不支持中文,其实不仅仅是中文。日文韩文一切非ASCII标准皆不支持,对于一款接口类应用来讲,不是什么值得自豪的事情。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(18)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
VB IT房地产