1、访问MS SQL Server 2000数据库时,返回的结果是乱码?
这个实在是坑人啊!
最开始学Python是上周,2020年1月7日,看到一个访问数据库的例子,想学一下Python,安装好环境,调试了一下数据就出来了,原来Python这么简单啊?!入门太容易了,难怪那么多人喜欢!
晚上想写一个完整的访问数据库的程序,结果发现显示汉字是乱码,这个是编码问题,得到数据库的编码和Python使用的编码,再设置一下应该问题不大,结果还是不行,到网上搜啊搜,最后有了一个解决办法,就像这样:
Item[1].encode('latin1').decode('gbk')
所返回的字段数据如果是字符,加上.encode('latin1').decode('gbk')就可以了。
汉字终于可以正常显示了。
以为这样就解决了。
结果程序还是报错,因为数字和日期的字段还是报错,那好吧,我做个类型判断type()就应该可以。可是返回结果为none的时候没有类型。
那在数据库里放一个字段表,里面有数据类型,提取出来判断一下就应该可以了。
终于可以全部显示了,为了这个问题,整整折腾了5个小时。
保存数据又出问题了,记录修改后保存到数据库里还是乱码!
先人板板,这是哪样啊?谁TMD说Python是最好用的开发语言?!这里面有这么多的坑啊?!
在网上继续百度,看到用pyodbc可以,下载下来,一试验,全部OK了!
最好的解决办法:使用pyodbc,我在https://pypi.org/下载的是对应的版本,pyodbc-4.0.30-cp37-cp37m-win_amd64.whl,到对应的目录下,执行:
Pip install pyodbc-4.0.30-cp37-cp37m-win_amd64.whl
2、窗口大小不能改变
原想这应该很简单,就是设置一下窗口的高和宽,写一个窗口居中的函数:
def SetWindowCenter(WinID): # 将指定的窗口居中
ScreenWidth = WinID.winfo_screenwidth() # 获取屏幕的宽度
ScreenHeight = WinID.winfo_screenheight() # 获取屏幕的高度
WinWidth=WinID.winfo_width() # 获取窗口的宽度
WinHeight=WinID.winfo_height() # 获取窗口的高度
WinSize = '%dx%d+%d+%d' % (WinWidth,WinHeight , (ScreenWidth - WinWidth) / 2, (ScreenHeight - WinHeight) / 2)
WinID.geometry(WinSize)
要使窗口居中的时候,调用一下就好了。
可是怎么样都不行,窗口是可以居中,可大小不正常,很郁闷。
结果,使用一下update()函数竟然就好了。
原来,tk初始化时默认都是1,要想获取准确的位置和大小信息 必须调用update方法,刷新窗口才可以。
用惯了其他开发工具,这样的逻辑很坑人啊,谁会注意到这一点?!
3、不能正常安装插件
由于我使用的是代理,安装插件的时候总是报错的多,即使在https://pypi.org/上找到对应文件,在本地安装也不行。
在写图形界面,要使用MDI窗体的时候tkinter就不行了,决定使用wxpython,可始终安装不上。
结果,使用一下update()函数竟然就好了。
上网查资料,找到解决办法:pip install wxpython -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
原来pypi.douban.com是个镜像,这样安装就顺利多了。类似地,你也可以将wxpython换成你想要安装的插件名称来进行。
4、运行完成后总出现:libpng warning: iCCP: cHRM chunk does not match sRGB
经过网络搜索,问题出现在QQ输入法,我直接卸掉就好了。