Python之关系数据库的读取、插入、删除

本文介绍如何使用Pandas和SQLAlchemy库连接关系数据库并执行数据操作,包括数据读取、插入和删除等任务。
部署运行你感兴趣的模型镜像

我们可以连接到关系数据库以使用Pandas库分析数据,以及另一个用于实现数据库连接的额外库。 这个软件包被命名为sqlalchemy,它提供了在python中使用的完整的SQL语言功能。

安装SQLAlchemy

pip install sqlalchemy

读取关系表

我们将使用Sqlite3作为关系数据库,因为它非常轻便且易于使用。 尽管SQLAlchemy库可以连接到各种关系源,包括MySql,Oracle和Postgresql以及Mssql。 我们首先创建一个数据库引擎,然后使用SQLAlchemy库的to_sql函数连接到数据库引擎。

在下面的例子中,我们通过使用已经通过读取csv文件创建的数据帧中的to_sql函数来创建关系表。 然后使用Pandasread_sql_query函数来执行和捕获来自各种SQL查询的结果。

from sqlalchemy import create_engine
import pandas as pd

data = pd.read_csv('/path/input.csv')

# Create the db engine
engine = create_engine('sqlite:///:memory:')

# Store the dataframe as a table
data.to_sql('data_table', engine)

# Query 1 on the relational table
res1 = pd.read_sql_query('SELECT * FROM data_table', engine)
print('Result 1')
print(res1)
print('')

# Query 2 on the relational table
res2 = pd.read_sql_query('SELECT dept,sum(salary) FROM data_table group by dept', engine)
print('Result 2')
print(res2)

执行上面示例代码,得到以下结果 -

Result 1
   index  id    name  salary  start_date        dept
0      0   1    Rick  623.30  2012-01-01          IT
1      1   2     Dan  515.20  2013-09-23  Operations
2      2   3   Tusar  611.00  2014-11-15          IT
3      3   4    Ryan  729.00  2014-05-11          HR
4      4   5    Gary  843.25  2015-03-27     Finance
5      5   6   Rasmi  578.00  2013-05-21          IT
6      6   7  Pranab  632.80  2013-07-30  Operations
7      7   8    Guru  722.50  2014-06-17     Finance

Result 2
         dept  sum(salary)
0     Finance      1565.75
1          HR       729.00
2          IT      1812.30
3  Operations      1148.00

将数据插入关系表

还可以使用pandas中提供的sql.execute函数将数据插入到关系表中。 在下面的代码中,我们将先前的csv文件作为输入数据集,将其存储在关系表中,然后使用sql.execute插入另一条记录。

from sqlalchemy import create_engine
from pandas.io import sql

import pandas as pd

data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv')
engine = create_engine('sqlite:///:memory:')

# Store the Data in a relational table
data.to_sql('data_table', engine)

# Insert another row
sql.execute('INSERT INTO data_table VALUES(?,?,?,?,?,?)', engine, params=[('id',9,'Ruby',711.20,'2015-03-27','IT')])

# Read from the relational table
res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine)
print(res)

执行上面示例代码,得到以下代码 -

   id        dept    name  salary  start_date
0   1          IT    Rick  623.30  2012-01-01
1   2  Operations     Dan  515.20  2013-09-23
2   3          IT   Tusar  611.00  2014-11-15
3   4          HR    Ryan  729.00  2014-05-11
4   5     Finance    Gary  843.25  2015-03-27
5   6          IT   Rasmi  578.00  2013-05-21
6   7  Operations  Pranab  632.80  2013-07-30
7   8     Finance    Guru  722.50  2014-06-17
8   9          IT    Ruby  711.20  2015-03-27

从关系表中删除数据

还可以使用pandas中的sql.execute函数将数据删除到关系表中。 下面的代码根据给定的输入条件删除一行。

from sqlalchemy import create_engine
from pandas.io import sql

import pandas as pd

data = pd.read_csv('C:/Users/Rasmi/Documents/pydatasci/input.csv')
engine = create_engine('sqlite:///:memory:')
data.to_sql('data_table', engine)

sql.execute('Delete from data_table where name = (?) ', engine,  params=[('Gary')])

res = pd.read_sql_query('SELECT ID,Dept,Name,Salary,start_date FROM data_table', engine)
print(res)

执行上面示例代码,得到以下结果

   id        dept    name  salary  start_date
0   1          IT    Rick   623.3  2012-01-01
1   2  Operations     Dan   515.2  2013-09-23
2   3          IT   Tusar   611.0  2014-11-15
3   4          HR    Ryan   729.0  2014-05-11
4   6          IT   Rasmi   578.0  2013-05-21
5   7  Operations  Pranab   632.8  2013-07-30
6   8     Finance    Guru   722.5  2014-06-17

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 将文件数据插入数据库的过程 为了实现通过Python读取的文件数据插入到数据库中的操作,通常会经历几个主要阶段。首先是文件的读取过程,在这个过程中,程序打开并解析目标文件的内容;其次是将这些内容转化为适合存入数据库的形式——这可能涉及到将文件转换成二进制格式[^1]。 对于具体的实施方法,可以采用如下方式: #### 文件读取与处理 针对不同类型的文件(如CSV、Excel),有不同的库可以帮助完成这一任务。例如,`pandas` 是一个非常流行的用于数据分析和处理的库,它能够轻松加载 Excel 或 CSV 文件,并将其内容转储为易于管理的数据结构。 ```python import pandas as pd # 假设我们要导入的是一个名为 'example.xlsx' 的 Excel 文件 data = pd.read_excel('example.xlsx') ``` 这段代码利用 `pandas` 库来读取 Excel 文件,并创建了一个 DataFrame 对象 `data` 来保存表格内的所有记录[^2]。 #### 数据准备与转换 一旦获得了所需的数据集之后,下一步就是准备好要写入数据库的信息。如果计划存储整个文件,则应考虑先将其编码为二进制形式再进行上传。这里展示了一种简单的做法: ```python binary_data = open('example.xlsx', 'rb').read() ``` 上述命令打开了指定路径下的文件,并以只读模式 (`r`) 和二进制模式 (`b`) 打开该文件,从而获取其原始字节序列作为变量 `binary_data` 存储起来。 #### 插入至数据库 最后一步涉及实际向数据库提交已处理好的数据。假设正在使用的是一种支持SQL语句的关系型数据库管理系统(RDBMS),那么可以通过执行 SQL INSERT 语句来进行这项工作。下面是一个例子,展示了怎样使用 SQLite 数据库连接器 `sqlite3` 完成本次任务: ```python import sqlite3 conn = sqlite3.connect(':memory:') # 创建一个新的SQLite内存数据库实例 cursor = conn.cursor() # 创建表单以便接收来自文件的数据 create_table_query = ''' CREATE TABLE IF NOT EXISTS documents ( id INTEGER PRIMARY KEY AUTOINCREMENT, filename TEXT NOT NULL, content BLOB NOT NULL ); ''' cursor.execute(create_table_query) insert_query = "INSERT INTO documents (filename, content) VALUES (?, ?)" cursor.execute(insert_query, ('example.xlsx', binary_data)) # 提交更改并关闭连接 conn.commit() conn.close() ``` 以上脚本首先建立了通往临时 SQLite 数据库的新链接,接着定义了一个用来容纳文档及其关联元数据(比如文件名)的表单。随后,构建了另一条查询指令,旨在把之前获得的文件名称连同对应的二进制流一起加入新建的表内。最终,确认所有的修改都已被安全地应用到了数据库上,并终止了当前对话。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值