最近处理公交数据,原数据存在SQL Server数据中。从前处理数据时师兄让导至csv中处理,然而能够处理的数据毕竟有限,因此尝试直接将python连至数据库,在这里将老鼠屎使用的方法和大家分享,如有错误也请看官批评指正。

    在这里提前交代一下博主的使用环境。操作系统:windows7,python版本:python3.6。

1 Python连接SQL Server数据库

    博主使用的是python里面的pymssql库。

1.1 安装pymssql库

    最简单的方法,在cmd中pip install即可。

pip install pymssql

    然而博主在安装时报错,因此博主采用了第二种方式。在这里提供两个网址,一个是pymssql官方下载网址,在这里找到适合自己的版本下载到本地,也可以从python安装包官方库中找pymssql库;或者从WindowsPython库下载地址大全中找pymssql库并找到合适自己的版本下载到本地,这里面有其他库的安装包,有需要的朋友们可以对应进行下载。

    下载好后,命令提示符进入pymssql的存放目录,之后pip install该文件即可。在这里提供一种简单的方法,windows下,进入存放pymssql的文件夹,可shift+右击-在此处打开命令窗口,即可将命令提示符进入该目录下。


    之后在命令提示符里面pip install所下载的文件即可,如博主所下载的版本为pymssql-2.1.4.dev5-cp36-cp36m-win_amd64.whl,博主则输入:

pip install pymssql-2.1.4.dev5-cp36-cp36m-win_amd64.whl

    之后即可完成pymssql的安装。

1.2 连接至数据库

import pymssql
conn = pymssql.connect(server="xxx.xxx.xxx.xxx",user="xxx",password="xxx",database="xxx")

    这里,server为数据库服务器名称或IP,user为用户名,password为密码,database为数据库名称。

2 pandas读写数据库

    在python连接好数据库后,pandas可以利用read_sql()方法将数据读入DataFrame。这里可以看一下老鼠屎的代码。

import pandas as pd
#这里即遵循sql语句规则
sql = "select * from 要查询的表格"
df0 = pd.read_sql(sql,conn)
df=pd.DataFrame(df0)

    之后可以看一下df(这是老鼠屎查询的结果)


    再之后就可以使用pandas对数据进行操作,这样可以大大提升对数据处理的效率,是不是很简单呢?

3 关于中文乱码问题

    老鼠屎在处理数据时就遭遇了中文乱码的问题,很是头疼。比如老鼠屎处理的数据


    这里参考了https://blog.csdn/pampas2012/article/details/37557873这一篇博客。

    文章中指出,“SQL Server 2008中,Pymssql读取中文时,字符串类型应定义为nVarchar,varchar定义对于中文支持不佳。将表的varchar修改为nVarchar后,中文在Django页面正常显示。”有关于如何将字符类型varchar修改为nVarchar,可以参考老鼠屎的文章SQL Server复制及修改表。修改后的表格即可是想要的样子


    然而修改字段的类型的话,代价有点大,记录很多会很慢。鱼与熊掌,不可得兼,总需有取舍。

附录

    另附一部分相关教程。

[1]pymssql官方介绍:http://pymssql/en/stable/intro.html

[2]SQL教程:http://www.w3school/sql/index.asp

                     http://www.runoob/sql/sql-tutorial.html

更多推荐

pandas操作SQL Server数据库