学习Pandas,第 8 课

英文原文: 08 - Lesson

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

  1. # 导入库
  2. import pandas as pd
  3. import sys
  4. from sqlalchemy import create_engine, MetaData, Table, select, engine
  1. print('Python version ' + sys.version)
  2. print('Pandas version ' + pd.__version__)
  1. Python version 3.6.1 | packaged by conda-forge | (default, Mar 23 2017, 21:57:00)
  2. [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]
  3. Pandas version 0.19.2

版本 1

这一部分,我们使用 sqlalchemy 库从 sql 数据库中抓取数据。 确保使用你自己的 ServerName, Database, TableName (服务器名,数据库和表名)。

  1. # Parameters
  2. TableName = "data"
  3. DB = {
  4. 'drivername': 'mssql+pyodbc',
  5. 'servername': 'DAVID-THINK',
  6. #'port': '5432',
  7. #'username': 'lynn',
  8. #'password': '',
  9. 'database': 'BizIntel',
  10. 'driver': 'SQL Server Native Client 11.0',
  11. 'trusted_connection': 'yes',
  12. 'legacy_schema_aliasing': False
  13. }
  14. # 建立数据库连接
  15. engine = create_engine(DB['drivername'] + '://' + DB['servername'] + '/' + DB['database'] + '?' + 'driver=' + DB['driver'] + ';' + 'trusted_connection=' + DB['trusted_connection'], legacy_schema_aliasing=DB['legacy_schema_aliasing'])
  16. conn = engine.connect()
  17. # 查询数据库表所需要的设置
  18. metadata = MetaData(conn)
  19. # 需要查询的表
  20. tbl = Table(TableName, metadata, autoload=True, schema="dbo")
  21. #tbl.create(checkfirst=True)
  22. # Select all
  23. sql = tbl.select()
  24. # 执行 sql 代码
  25. result = conn.execute(sql)
  26. # 数据放到一个 dataframe 中
  27. df = pd.DataFrame(data=list(result), columns=result.keys())
  28. # 关闭数据库连接
  29. conn.close()
  30. print('Done')
  1. Done

查看一下 dataframen 中的内容。

  1. df.head()










































Date Symbol Volume
0 2013-01-01 A 0.00
1 2013-01-02 A 200.00
2 2013-01-03 A 1200.00
3 2013-01-04 A 1001.00
4 2013-01-05 A 1300.00

  1. df.dtypes
  1. Date datetime64[ns]
  2. Symbol object
  3. Volume object
  4. dtype: object

转变成特殊的数据类型。以下的代码,你需要比配你自己的表名并修改代码。

版本 2

  1. import pandas.io.sql
  2. import pyodbc
  1. # 参数,你需要修改成你自己的服务器和数据库
  2. server = 'DAVID-THINK'
  3. db = 'BizIntel'
  4. # 创建数据库连接
  5. conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + DB['servername'] + ';DATABASE=' + DB['database'] + ';Trusted_Connection=yes')
  6. # 查询数据库,这里的 data 需要修改成你自己的表名
  7. sql = """
  8. SELECT top 5 *
  9. FROM data
  10. """
  11. df = pandas.io.sql.read_sql(sql, conn)
  12. df.head()










































Date Symbol Volume
0 2013-01-01 A 0.0
1 2013-01-02 A 200.0
2 2013-01-03 A 1200.0
3 2013-01-04 A 1001.0
4 2013-01-05 A 1300.0

版本 3

  1. from sqlalchemy import create_engine
  1. # 参数,你需要修改成你自己的服务器和数据库
  2. ServerName = "DAVID-THINK"
  3. Database = "BizIntel"
  4. Driver = "driver=SQL Server Native Client 11.0"
  5. # 创建数据库连接
  6. engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database + "?" + Driver)
  7. df = pd.read_sql_query("SELECT top 5 * FROM data", engine)
  8. df










































Date Symbol Volume
0 2013-01-01 A 0.0
1 2013-01-02 A 200.0
2 2013-01-03 A 1200.0
3 2013-01-04 A 1001.0
4 2013-01-05 A 1300.0

This tutorial was created by HEDARO


本教程由派兰数据翻译

These tutorials are also available through an email course, please visit http://www.hedaro.com/pandas-tutorial to sign up today.