PYTHON的数据库交互

在商业场景下,⼤多数数据可能不是存储在⽂本或 Excel ⽂件
中。基于 SQL 的关系型数据库(如 SQL Server PostgreSQL
MySQL 等)使⽤⾮常⼴泛,其它⼀些数据库也很流⾏。数据库
的选择通常取决于性能、数据完整性以及应⽤程序的伸缩性需
求。
将数据从 SQL 加载到 DataFrame 的过程很简单,此外 pandas
有⼀些能够简化该过程的函数。例如,我将使⽤ SQLite 数据库
(通过 Python 内置的 sqlite3 驱动器):

import sqlite3

query = """
       CREATE TABLE  test3
       (a VARCHAR(20),b VARCHAR(20),
        c REAL,d INTEGER);
        """
con=sqlite3.connect('mydate.sqlite')#连接数据库驱动
con.execute(query)#提交

#插入数据
data=[('Atlanta','Georgia',1.25,6),
    ('Tallahassee','Florida',2.6,3),
    ('Sacramento','California',1.7,5)]
stmt="INSERT INTO   test4  VALUES(?,  ?, ?, ?)"
con.executemany(stmt,data)
con.commit()
从表中选取数据时,⼤
cursor = con.execute('select    distinct * from   test4')#执行一个SQL语句来查询test4中的所有数据
rows = cursor.fetchall()#并将结果存储在变量rows中,`fetchall()` 是用于从数据库中检索所有匹配查询条件的行的函数
print(rows)
cur=cursor.description

`cursor.description` 返回一个包含有关结果集中列的信息的序列。这些信息以元组的形式组织,每个元组包含以下内容:(name, type_code, display_size, internal_size, precision, scale, null_ok)

因此,当你执行`cur=cursor.description` 和`print(cur)`时,它将会输出有关结果集中列的信息。

可以将这个元组列表传给 DataFrame 构造器,但还需要列名
(位于光标的 description 属性中):
result = pd.DataFrame(rows, columns=[x[0] for x    in cur])
print(result)

这种数据规整操作相当多,你肯定不想每查⼀次数据库就重写⼀
255 次。 SQLAlchemy 项⽬ 是⼀个流⾏的 Python SQL ⼯具,它抽象出
SQL 数据库中的许多常⻅差异。 pandas 有⼀个 read_sql 函数,
可以让你轻松的从 SQLAlchemy 连接读取数据。这⾥,我们⽤
SQLAlchemy 连接 SQLite 数据库,并从之前创建的表读取数据:
import sqlalchemy as sqla
db=sqla.create_engine('sqlite:///mydate.sqlite')
obj=pd.read_sql('select distinct * from test4',db)
print(obj)
  • import pandas as pd
  • import sqlalchemy as sqla
  • # 创建引擎并连接到数据库
  • db = sqla.create_engine('sqlite:///mydate.sqlite')
  • # 从数据库中运行查询并将结果存储到DataFrame对象中
  • obj = pd.read_sql('select distinct * from test4', db)
  • # 打印DataFrame对象
  • print(obj)
  • 访问数据通常是数据分析的第⼀步。在本章中,我们已经学了⼀
  • 些有⽤的⼯具。在接下来的章节中,我们将深⼊研究数据规整、
    数据可视化、时间序列分析和其它主题。
  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值