这个东西,不支持中文,大家注意。

发布于 11-25 10:31 字数 2394 浏览 821 评论 18

环境为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:

keyworddescriptiondefault
autocommitIf False, Connection.commit must be called; otherwise each statement is automatically commitedFalse
ansiIf True, the driver does not support Unicode and SQLDriverConnectA should be usedFalse
unicode_resultsIf True, strings returned in result sets are always Unicode (2.1.5+)False
readonlyIf True, the connection is set to readonlyFalse

unicode,不支持中文,其实不仅仅是中文。日文韩文一切非ASCII标准皆不支持,对于一款接口类应用来讲,不是什么值得自豪的事情。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(18

北笙凉宸2021-11-30 11:32:27

VB IT房地产

浮生未歇2021-11-30 11:32:26

pymssql不支持unicode,只能说明它还需要改进。不要把缺陷当优点啊

清欢2021-11-30 11:32:25

法国大概

狠疯拽2021-11-30 11:32:25

回复
我是针对你上面的“既然python3明确指出他支持中文。”这句来说的

清欢2021-11-30 11:32:24

数据库、表、变量用中文名?开除!

猫性小仙女2021-11-30 11:32:24

python3支持中文,不代表pymssql也支持中文

韬韬不绝2021-11-30 11:32:23

不支持中文其实质就是不支持unicode,这方面ODBC做得就显然要好得多。

孤檠2021-11-30 11:32:17

不一定中文就比英文更占空间。 英文两个单词,中文只要两个字。而且一般命名英文都是超过8个字符的。

简单气质女生网名2021-11-30 11:32:13

用中文太占空间

爱你是孤单的心事2021-11-30 11:32:05

用中文命名数据库名~~ 有创意,哈哈

成熟的代价2021-11-30 11:31:38

我注释全都是用英文写的。但这并不影响我试试他是否支持中文数据库表名。既然python3明确指出他支持中文。中文表名主要是考虑到40岁以上的政府人员使用第三方数据库管理可以一目了然。

离去的眼神2021-11-30 11:31:20

在我的定理中中文只能用来注释和提示.

反目相谮2021-11-30 11:30:52

为毛要用中文数据库名,这不科学啊。。。但这也反映出程序的一个 bug.对数据解析判断不严格导致崩溃。。

谁的新欢旧爱2021-11-30 11:28:48

中文的变量 给我的感觉就是这个人是新手了

终遇你2021-11-30 11:27:45

回复
既能用中文,还能用英文,才是一个好的应用。

无声静候2021-11-30 11:04:58

程序当然应该都支持 但是代码最好还是英文~

奢望2021-11-30 06:50:24

使用中文作数据库名、表名,是很蛋疼的选择,你搞这个太蛋疼了

三月梨花2021-11-26 20:09:11

Jjj

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文