学习Pandas(八)

英文原文: 08 - Lesson

如何从微软的 SQL 数据库中抓取数据。

# 导入库
import pandas as pd
import sys
from sqlalchemy import create_engine, MetaData, Table, select, engine
print('Python version ' + sys.version)
print('Pandas version ' + pd.__version__)
Python version 3.6.1 | packaged by conda-forge | (default, Mar 23 2017, 21:57:00) [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] Pandas version 0.19.2 # 版本 1 这一部分,我们使用 ***sqlalchemy*** 库从 sql 数据库中抓取数据。 确保使用你自己的 ***ServerName***, ***Database***, ***TableName*** (服务器名,数据库和表名)。
# Parameters
TableName = "data"

DB = {
    'drivername': 'mssql+pyodbc',
    'servername': 'DAVID-THINK',
    #'port': '5432',
    #'username': 'lynn',
    #'password': '',
    'database': 'BizIntel',
    'driver': 'SQL Server Native Client 11.0',
    'trusted_connection': 'yes',  
    'legacy_schema_aliasing': False
}

# 建立数据库连接
engine = create_engine(DB['drivername'] + '://' + DB['servername'] + '/' + DB['database'] + '?' + 'driver=' + DB['driver'] + ';' + 'trusted_connection=' + DB['trusted_connection'], legacy_schema_aliasing=DB['legacy_schema_aliasing'])
conn = engine.connect()

# 查询数据库表所需要的设置
metadata = MetaData(conn)

# 需要查询的表
tbl = Table(TableName, metadata, autoload=True, schema="dbo")
#tbl.create(checkfirst=True)

# Select all
sql = tbl.select()

# 执行 sql 代码
result = conn.execute(sql)

# 数据放到一个 dataframe 中
df = pd.DataFrame(data=list(result), columns=result.keys())

# 关闭数据库连接
conn.close()

print('Done')
Done 查看一下 dataframen 中的内容。
df.head()
DateSymbolVolume
02013-01-01A0.00
12013-01-02A200.00
22013-01-03A1200.00
32013-01-04A1001.00
42013-01-05A1300.00
df.dtypes
Date datetime64[ns] Symbol object Volume object dtype: object 转变成特殊的数据类型。以下的代码,你需要比配你自己的表名并修改代码。 # 版本 2
import pandas.io.sql
import pyodbc
# 参数,你需要修改成你自己的服务器和数据库
server = 'DAVID-THINK'
db = 'BizIntel'

# 创建数据库连接
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + DB['servername'] + ';DATABASE=' + DB['database'] + ';Trusted_Connection=yes')

# 查询数据库,这里的 data 需要修改成你自己的表名
sql = """

SELECT top 5 *
FROM data

"""
df = pandas.io.sql.read_sql(sql, conn)
df.head()
DateSymbolVolume
02013-01-01A0.0
12013-01-02A200.0
22013-01-03A1200.0
32013-01-04A1001.0
42013-01-05A1300.0
# 版本 3
from sqlalchemy import create_engine
# 参数,你需要修改成你自己的服务器和数据库
ServerName = "DAVID-THINK"
Database = "BizIntel"
Driver = "driver=SQL Server Native Client 11.0"

# 创建数据库连接
engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database + "?" + Driver)

df = pd.read_sql_query("SELECT top 5 * FROM data", engine)
df
DateSymbolVolume
02013-01-01A0.0
12013-01-02A200.0
22013-01-03A1200.0
32013-01-04A1001.0
42013-01-05A1300.0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值