种庄稼已经种完很长时间,有玉米、红豆、土豆、豆角、西红柿、红薯、紫薯、茼蒿、圆白菜、黄瓜、南瓜、生菜、芹菜、茄子、辣椒等,生菜和茼蒿已经吃到自己种的了,最近有听说粮食又要涨价,可惜土地有点小,没办法再种别的。不要羡慕,虽然修炼python,但是还是离不开五谷杂粮。
今天修炼的内容是python连接SQLserver,主因是身边有个服务器里面安装的是SQLServer,而且修炼python已经很长时间了,总想着让python连接到SQLServer上。
python的默认工具包里是没有与数据库连接的工具,我们要加载数据库工具包。加载数据库工具这里选pymssql,当然还有其他别的工具包,查了其他的秘籍,都比这个繁琐,所以最终选择了pymssql。
图1-导入pymssql出现错误:No module named ’pymssql’
当我们遇到如图1所示,出现这种错误提示的时候,说明我们的python小世界没有安装pymssql工具包,那么我们需要用pip这个工具,将pymssql安装到python小世界中,在python安装路径下运行pip install pymssql,如图2。
图2-使用pip工具安装pymssql
图3-出现Successfully字样
当出现Successfully字样,如图3,说明在python小世界中已经安装了pymssql工具包。这时候我们回到python小世界,再次使用import pymssql,如图4,不出现错误提示意味着python可以加载python工具包了。
图4-再次使用import pymssql
可以加载pymssql工具包后,那么可以使用这个工具包里的connect()工具来进行SQLServer的连接,打开IDE写配方,如图5。
图5-连接的配方
写好配方后,要保存。针对图5这个配方解释一下:
第一行,import pymssql,这个是引入工具包,为了使用时少敲几个字符,这里用了as,使用时用“pql”代替“pymssql”。
第二行,空。
第三行到第六行,分别将服务器IP地址、用户名、密码、即将访问的数据库的名字以字符串的形式放进盒子里备用。
第八行,用于连接SQLServer的是pymssql工具包里的connect()工具,前面有了as,那么这里需要写成pql.connect(……),connect()工具的括号中需要加入内容,才可以让这个工具使用正常。除了第三行到第六行的内容外,connect()工具的括号中还可以包含port和charset。这两个内容的作用是,port指定访问服务器端口,charset是指定字符集。
第十三行的message盒子里是个提示信息,我们预设其为“未连接。”。
第十五行的if语句,参考条件是 conn,即当正常能连接时返回True,不能正常连接返回False。一旦连接成功,那么将这个conn连接用conn.close()关闭掉,连接任务完成。
最后一行是 将这个message包含的信息print出来。
值得注意的是port和charset,port的数值是1433,这是SQLServer默认的端口,我们可以从服务器端的SQLServer管理器中进行更改,如图6,不熟悉的这方面内容的可以找相关秘籍大补,也可以不用理会这样的内容,记住连接SQLServer的port部分用1433即可。
图6,SQLServer配制管理器端口
charset是指定字符集,这里指定的字符集是cp936,这是从当前系统中调用出来的,两台机器的数据编码要一致,否则可能出现乱码的问题。如图7。
图7,查找当前系统使用的编码
这些内容了解得差不多了,使用配方试试吧。若出现如图8显示的错误,那么我们还需要对服务器进行设置,如图9,在服务器端防火墙中新建入站规则,新建的规则内容是允许1433端口入站,如图10。
图8-出现错误提示20009和10060
图9-防火墙高级设置-入站规则中新建规则
图10-将1433端口加入
设置完后,我们再运行连接SQLServer的配方,发现已经可以正常连接了。如图11。
图11-连接成功
以上是局域网内使用两台机器的连接,python安装在客户端,服务器端部署SQLServer,若同一个机器里面既有python,还有SQLServer,那么使用python连接SQLServer是不需要防火墙入站的端口开设。
开放服务器端口有安全风险,尤其是面向互联网,更好的方法是在服务器端设置响应配方,响应配方长期运行,让其响应来自客户端的请求,处理校正使用者身份,规避由开放端口产生的风险。
好啦,今天修炼结束,摘菜去,雨水充足,芹菜长势喜人,摘一些送朋友。
-------------------------------------------------
留言与评论(共有 0 条评论) “” |