龙空技术网

Python中使用SQL语句访问SQL Server和Pandas数据

程序化交易A2Z 276

前言:

此时我们对“python调用数据库数据”大致比较关怀,兄弟们都需要剖析一些“python调用数据库数据”的相关资讯。那么小编也在网上收集了一些关于“python调用数据库数据””的相关资讯,希望各位老铁们能喜欢,同学们快快来了解一下吧!

Pandas是python语言中生成、导入、操控数据的工具包,而SQL语言是操作一般数据库常用的编程语言,那么如何在python编程环境中,使用SQL编成的代码,访问或操控一般数据库系统中的数据呢?pyodbc工具包就是为这种需求服务的,可以与当前常见的d数据管理系统建立连接,可以在python中像使用SQL查询那样访问数据。

pyodbc支持的数据管理系统Google BigQueryHive from Ubuntu / DebianMicrosoft AccessMicrosoft ExcelMicrosoft SQL Server from WindowsMicrosoft SQL Server from LinuxMicrosoft SQL Server from Red Hat or CentOSMicrosoft SQL Server from Red Hat 6 or CentOS-7Microsoft SQL Server from Mac OSXMySQLNetezzaOracle from Red Hat or CentOSPostgreSQLSQLiteTeradataVertica

本文简述用pyodbc操作SQL Server数据库。

安装pyodbc工具包

pip install pyodbc
调用pyodbd工具包

在与SQL server数据库建立连接之前,先导入该工具包:

import pyodbc
与SQL server 建立连接

使用pyodbc.connect 函数建立与SQL Server的连接,该函数需要一个连接字符串作为参数,连接字符串的定义和声明可以分开。连接分为两种:可信任连接和不可信任连接,其中不可信任连接需要输入用户名及其密码。连接字符串的组成如以下实例:

可信任连接字符串

connection_string = ("Driver={SQL Server Native Client 11.0};"            "Server=Your_Server_Name;"            "Database=My_Database_Name;"            "Trusted_Connection=yes;")
不可信任连接字符串
connection_string = ("Driver={SQL Server Native Client 11.0};"            "Server=Your_Server_Name;"            "Database=My_Database_Name;"            "UID=Your_User_ID;"            "PWD=Your_Password;")

连接字符串内容包括:Server 名称、Database名称、User ID用户名和密码。

获取服务器名称

连接SQL Server数据库系统的界面如下图所示:

获得上述信息的方法有两种:一种是查看如上图这样的登录界面,另一种是使用SQL查询语句:

SELECT @@SERVERNAME

获取数据库名称

在MS SQL Server Management Studio系统中,可以在object Explorer(对象浏览器)菜单中查找数据库名称,如下图所示:

在图中的实例,数据库名称为:My_Database_Name

获取用户名-UID

在SQL Server 登陆界面中,可以看到用户名。

与SQL Server建立连接

使用pyodbc.connect函数完成连接初始化,代码如下:

connection = pyodbc.connect(connection_string)

在python中,连接SQL Server数据库,

import pyodbcconnection_string = ("Driver={SQL Server Native Client 11.0};"            "Server=Your_Server_Name;"            "Database=My_Database_Name;"            "UID=Your_User_ID;"            "PWD=Your_Password;")connection = pyodbc.connect(connection_string)
在python中运行SQL查询语句

与SQL Sever建立连接之后,可以运行SQL查询语句,这需要定义一个游标(cursor)。例如,一个简单的查询,查看数据表State_Population的前10行数据,代码如下:

# 游标 Cursor 初始化cursor = connection.cursor()# 执行一个 SQL 查询cursor.execute('SELECT TOP(10) * FROM State_Population')

运行上述语句后,并不能看到结果数据,可以另外把查询结果数据打印出来,代码如下:

for row in cursor:    print(row)

结果如下:

(AL,  under18,  2012,   1117489.0)(AL,    total,  2012,   4817528.0)(AL,  under18,  2010,   1130966.0)(AL,    total,  2010,   4785570.0)(AL,  under18,  2011,   1125763.0)(AL,    total,  2011,   4801627.0)(AL,    total,  2009,   4757938.0)(AL,  under18,  2009,   1134192.0)(AL,  under18,  2013,   1111481.0)(AL,    total,  2013,   4833722.0)
在python中操作数据库中的表

Pandas是python中的保存数据的数据结构,其dataframe和SQL数据表相似。Pandas提供了以下读取SQL 数据的函数:

pandas.read_sql_table() ,参数是数据表的名称pandas.read_sql_query(),参数为SQL查询语句字符串pandas.read_sql(),把前面两个参数打包在一起

再看看查看数据表State_Population的前10行数据,实例代码如下:

import pandas as pddata = pd.read_sql('SELECT TOP(10) * FROM State_Population', connection)data

把State_Population数据表中前10条记录导入到data,结果如下:

可以把查询语句作为字符串单独写,通过一个变量调用,如下:

query = 'SELECT * FROM STATE_AREAS WHERE [area (sq. mi)] > 100000'area = pd.read_sql(query, connection)area

结果如下图:

pyodbc把python和SQL结合起来使用,这极大的方便了操控常见的各种规模的数据库管理系统。

标签: #python调用数据库数据