पायथन - संबंधपरक डेटाबेस

हम डेटा का विश्लेषण करने के लिए संबंधपरक डेटाबेस से जुड़ सकते हैं pandasपुस्तकालय और साथ ही डेटाबेस कनेक्टिविटी को लागू करने के लिए एक और अतिरिक्त पुस्तकालय। इस पैकेज को नाम दिया गया हैsqlalchemy जो अजगर में इस्तेमाल होने के लिए पूर्ण SQL भाषा कार्यक्षमता प्रदान करता है।

SQLAlchemy स्थापित कर रहा है

एनाकोंडा का उपयोग करके इंस्टॉलेशन बहुत सीधा है जो हमने अध्याय डेटा विज्ञान पर्यावरण में चर्चा की है । मान लें कि आपने इस अध्याय में वर्णित एनाकोंडा को स्थापित किया है, SQLAlchemy पैकेज को स्थापित करने के लिए एनाकोंडा प्रॉम्प्ट विंडो में निम्न कमांड चलाएँ।

conda install sqlalchemy

रिलेशनल टेबल्स पढ़ना

हम अपने रिलेशनल डेटाबेस के रूप में Sqlite3 का उपयोग करेंगे क्योंकि यह बहुत हल्का वजन और उपयोग करने में आसान है। हालांकि SQLAlchemy लाइब्रेरी MySql, Oracle और Postgresql और Mssql सहित कई प्रकार के संबंधपरक स्रोतों से जुड़ सकती है। हम पहले एक डेटाबेस इंजन बनाते हैं और फिर डेटाबेस इंजन से कनेक्ट करते हैंto_sql SQLAlchemy लाइब्रेरी का कार्य।

नीचे दिए गए उदाहरण में हम रिलेशनल टेबल बनाते हैं to_sqlसीएसवी फ़ाइल पढ़कर पहले से बनाई गई डेटाफ्रेम से कार्य करना। तब हम उपयोग करते हैंread_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

संबंधपरक तालिकाओं में डेटा सम्मिलित करना

हम पांडा में उपलब्ध sql.execute फ़ंक्शन का उपयोग करके रिलेशनल टेबल में डेटा भी डाल सकते हैं। नीचे दिए गए कोड में हमने इनपुट डेटा सेट के रूप में पिछली सीएसवी फाइल को रिलेशनल टेबल में स्टोर किया और फिर sql.exitute का उपयोग कर एक और रिकॉर्ड डाला।

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

रिलेशनल टेबल्स से डेटा हटाना

हम पांडा में उपलब्ध 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