Python之關聯式資料庫的讀取 插入 刪除

2021-08-03 09:42:05 字數 4258 閱讀 7223

我們可以連線到關聯式資料庫以使用pandas庫分析資料,以及另乙個用於實現資料庫連線的額外庫。 這個軟體包被命名為sqlalchemy,它提供了在python中使用的完整的sql語言功能。

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

關聯式資料庫與非關聯式資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關聯式資料庫與非關聯式資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

mysql關聯式資料庫 關聯式資料庫概述

為什麼需要資料庫?因為應用程式需要儲存使用者的資料,比如word需要把使用者文件儲存起來,以便下次繼續編輯或者拷貝到另一台電腦。要儲存使用者的資料,乙個最簡單的方法是把使用者資料寫入檔案。例如,要儲存乙個班級所有學生的資訊,可以向檔案中寫入乙個csv檔案 id,name,gender,score 1...