பைத்தானை பயன்படுத்தி SQL வினவல்
இப்பொழுது student அட்டவணையில் வினவலைப் பயன்படுத்துதலைப்பற்றி .0கற்கலாம். பதிவுகளைச் சேர்ப்பதைப் போல அவற்றை திரும்ப பெறுவதும் மிக எளிது. Execute செயற்கூறு SQL கட்டளைகளை பயன்படுத்தி அனைத்து தரவுகளையும் அட்டவணையில் இருந்து பெறுகிறது.
SELECT கூற்று
SQL-ல் மிக அதிகமாக பயன்படும் கூற்று ஆகும்.
இந்த கூற்று தரவுத் தளத்திலிருந்து தரவை பெற பயன்படுத்தப்படுகிறது. இந்த கூற்றுக்கான
கட்டளை அமைப்பு “Select * from
table_name” அட்டவணையின் அனைத்து தரவுகளையும் பட்டியலாக ஒரு பொருளில் பெற முடியும்.
"sql_Academy_query.py"
என்ற சேமிக்கப்பட்ட நிரலை இயக்கினால் மெய்யான தரவைப் பொறுத்து பின்வரும் வெளியீடு தோன்றும்.
பைதான் கோப்பு உருவாக்கப்படும் கோப்புறையில் தான் தரவுத்தள கோப்புகளும்
உருவாக்கப்படும் என்பதை கவனத்தில் கொள்ள வேண்டும். கோப்பின் பாதையை மாற்ற விரும்பினால்
கோப்பை திறக்கும் போது மாற்றம் செய்ய வேண்டும்.
எடுத்தக்காட்டு 15.4.1-1
#save the file as
"sql_Academy_query.py”
# cursor object
crsr = connection.cursor()
# execute the command to fetch all the
data from the table Student
crsr.execute("SELECT * FROM
Student")
# store all the fetched data in the
ans variable
ans= crsr.fetchall()
# loop to print all the data
for i in ans:
print(i)
1. fetchall() பயன்படுத்தி அனைத்து பதிவுகளையும் காண்பித்தல்
fetchall() செயற்கூறு அனைத்து வரிசைகளையும் தரவுத்தள அட்டவணையில்
இருந்து பெற பயன்படுகிறது.
எடுத்தக்காட்டு 15.4.1.1-1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM
student")
print("fetchall:")
result = cursor.fetchall()
for r in result:
print(r)
வெளியீடு
fetchall: (1, 'Akshay', 'B', 'M',
87.8, '2001-12-12')
(2, 'Aravind', 'A', 'M', 92.5,
'2000-08-17')
(3, 'BASKAR', 'C', 'M', 75.2,
'1998-05-17')
(4, 'SAJINI', 'A', 'F', 95.6,
'2002-11-01')
(5, 'VARUN', 'B', 'M', 80.6,
'2001-03-14')
(6, 'PRIYA', 'A', 'F', 98.6,
'2002-01-01')
(7, 'TARUN', 'D', 'M', 62.3,
'1999-02-01')
குறிப்பு
cursor.fetchall() - fetchall () செயற்கூறு அனைத்து வரிசைகளையும்
பெற பயன்படுகிறது. cursor.fetchone() - fetchone () செயற்கூறு வினவல் முடிவுத் தொகுதியின்
உள்ளே உள்ள அடுத்த வரிசையைக் கொடுக்கும் (அல்லது) எந்த வரிசையும் இல்லை என்றால்
None என்ற மதிப்பை விடையாகக் கொடுக்கும்.
cursor.fetchmany() செயற்கூறு முடிவுத் தொகுதியில் மீதம் உள்ள
வரிசைகளின் எண்ணிக்கையைக் கொடுக்கும்.
2. fetchone()-னைப் பயன்படுத்தி ஒரு பதிவைக் காண்பித்தல்
fetchone() செயற்கூறு வினவல் முடிவுத் தொகுதியின் உள்ளே உள்ள
அடுத்த வரிசையைக் கொடுக்கும் (அல்லது) எந்த வரிசையும் இல்லை என்றால் None என்ற மதிப்பை
கொடுக்கும்.
எடுத்தக்காட்டு 15.4.1.2-1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM
student")
print("\nfetch one:")
res = cursor.fetchone().
print(res)
வெளியீடு
fetch one:
(1, 'Akshay', 'B', 'M', 87.8,
'2001-12-12')
3. fetchone()-னைப் பயன்படுத்தி அனைத்து பதிவுகளையும் காண்பித்தல்
while மடக்கு
மற்றும் fetchone() செயற்கூறு பயன்படுத்தி அட்டவணையில் உள்ள அனைத்து பதிவுகளையும் காண
முடியும்.
எடுத்தக்காட்டு 15.4.1.3-1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM
student")
print("fetching all records one
by one:")
result = cursor.fetchone()
while result is not None:
print(result)
result = cursor.fetchone()
வெளியீடு
fetching all records one by one:
(1, 'Akshay', 'B', 'M', 87.8,
'2001-12-12')
(2, 'Aravind', 'A', 'M', 92.5,
'2000-08-17')
(3, 'BASKAR', 'C', 'M', 75.2,
'1998-05-17')
(4, 'SAJINI', 'A', 'F', 95.6,
'2002-11-01')
(5, 'VARUN', 'B', 'M', 80.6,
'2001-03-14')
(6, 'PRIYA', 'A', 'F', 98.6,
'2002-01-01')
(7, 'TARUN', 'D', 'M', 62.3,
'1999-02-01')
4. fetchmany() பயன்படுத்தி பதிவுகளைக் காண்பித்தல்
குறிப்பிட்ட எண்ணிக்கையிலான பதிவுகளைக் காண்பிக்க
fetchmany() செயற்கூறு பயன்படுகிறது. இந்த செயற்கூறு முடிவுத் தொகுதியில் மீதம் உள்ள
வரிசைகளின் எண்ணிக்கையைக் கொடுக்கும்.
எடுத்தக்காட்டு 15.4.1.4-1: பயன்படுத்தி பதிவுகளின் பொருளடக்கத்தைக் காண்பிக்கும் நிரல்
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM
student")
print("fetching first 3
records:")
result = cursor.fetchmany(3)
print(result)
வெளியீடு
fetching first 3 records:
[(1,'Akshay', 'B', 'M', 87.8,
'2001-12-12'), (2, 'Aravind', 'A', 'M', 92.5, '2000-08-17'), (3, 'BASKAR', 'C',
'M', 75.2, '1998-05-17'))
எடுத்தக்காட்டு 15.4.1.4-2: மடக்கு பயன்படுத்தாமல், பதிவுகளின் பொருளடக்கத்தை புதியவரியில் காண்பிக்கும் நிரல்
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM
student")
print("fetching first 3
records:")
result = cursor.fetchmany(3)
print(*result,sep="\n")
வெளியீடு
fetching first 3 records:
(1, 'Akshay', 'B', 'M', 87.8,
'2001-12-12')
(2, 'Aravind', 'A', 'M', 92.5,
'2000-08-17')
(3, 'BASKAR', 'C', 'M', 75.2,
'1998-05-17')
குறிப்பு
மடக்குகளைப் பயன்படுத்தாமல் இடைவெளிகளுடன் கூடிய உறுப்புகளின் பட்டியலை ஒரே வரிசையில் அச்சிடுவதற்கு குறியீடு =”\n” or sep=",” பயன்படுகிறது.
2. SQL- ல் துணைநிலைகூற்று (CLAUSES)
SQL வழங்கும் பல வகையான துணைநிலை கூற்றுகள் SELECT கூற்றுகளில் பயன்படுத்தப்படுகிறது.
SQLite ல் ஏறக்குறைய அனைத்து வகை துணை நிலை கூற்றுகளும் செயல்படுகிறது. அதிகமாக பயன்படுத்தப்படும்
துணை நிலை கூற்றுகள் பின்வருமாறு,
• DISTINCT
• WHERE
• GROUP BY
• ORDER BY.
• HAVING
1. SQL DISTINCT துணைநிலைகூற்று
ஒரு குறிப்பிட்டநெடுவரிசை அல்லது அட்டவணையில் உள்ள இரட்டிப்பு
மதிப்புகளைத்தவிர்ப்பதற்காக DISTINCT துணை நிலை கூற்று பயன்படுகிறது. இந்த சிறப்பு
சொல்லைப் பயன்படுத்தும் போது தனித்த மதிப்புகளை பெற முடியும்.
பின்வரும் எடுத்துக்காட்டில், "student table” என்ற அட்டவணையில்
இருந்து மாணவர்கள் பெற்ற தரவரிசை காண்பிக்கப்பட்டுள்ளது.
எடுத்தக்காட்டு 15.4.2.1-1
import sqlite3
connection =
sqlite3.connect("Academy.db").
cursor = connection.cursor()
cursor.execute("SELECT DISTINCT
(Grade) FROM student")
result = cursor.fetchall()
print(result)
வெளியீடு
[('B',), ('A',), ('C',), ('D',)]
மேற்கண்ட எடுத்துக்காட்டில் "distinct” என்ற சிறப்பு சொல்லைப்
பயன்படுத்தவில்லை எனில் 4 பதிவுகளுக்குப் பதிலாக 7 பதிவுகள் காண்பிக்கப்பட்டிருக்கும்.
ஏனெனில், மூல அட்டவணையில் இரட்டிப்பு மதிப்புக்களுடன் 7 பதிவுகள் உள்ளன .
2. SQL WHERE துணைநிலை கூற்று
குறிப்பிட்ட நிபந்தனைகளை நிறைவேற்றும் பதிவுகளை மட்டுமே பிரித்தெடுக்க
WHERE துணைநிலை கூற்று பயன்படுகிறது. பின்வரும் எடுத்துக்காட்டில் “student table”
தரவுத்தளத்தில் இருந்து மாணவர்களின் தரவரிசையை மட்டுமே பிரித்தெடுப்பதைக் காணலாம்.
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT DISTINCT
(Grade) FROM student where gender='M''')
result = cursor.fetchall()
print(*result,sep="\n")
வெளியீடு
('B',)
('A',)
('C',)
('D',)
3. SQL Group By துணை நிலை கூற்று
GROUP BY துணை நிலை கூற்றானது குறிப்பிட்ட பதிவுகளைச் சுருக்கமான
வரிசைகளைக் கொண்ட குழுவாக சேர்க்கிறது. இது ஒவ்வொரு குழுவிற்கும் ஒரு பதிவை கொடுக்கிறது.
இது மதிப்பீட்டு செயற்கூறுகள் (COUNT, MAX, MIN, SUM, AVG) விடைத்தொகுதிகளை ஒன்று அல்லது
அதற்கு மேற்பட்டநெடுவரிசைகுழுக்களாக மாற்றபயன்படுகிறது. பின்வரும் எடுத்துக்காட்டு
student அட்டவணையில் இருந்து ஆண் மற்றும் பெண் எண்ணிக்கையைக் கணக்கிட்டு விடையைக் காண்பிக்கிறது.
எடுத்தக்காட்டு 15.4.2.3 -1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT
gender,count(gender) FROM student Group BY gender")
result = cursor.fetchall()
print(*result,sep="\n")
வெளியீடு
('F', 2)
('M', 5)
4. SQL ORDER துணைநிலைகூற்று
ORDER BY துணை நிலைக்கூற்று குறிப்பிட்ட புலங்களில் உள்ள தரவுகளை
வரிசையாக்க SELECT கூற்றுடன் சேர்ந்து பயன்படுகிறது. விடைத் தொகுதியை ஏறுவரிசை அல்லது
இறங்கு வரிசையில் வரிசையாக்கம் செய்ய உதவுகிறது. பின்வரும் எடுத்துக்காட்டு, மாணவர்
பெயர் மற்றும் வரிசை எண் ஆகியவற்றை அகர வரிசைப்படி காண்பிக்கிறது.
எடுத்தக்காட்டு 15.4.2.4-1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT Rollno,sname
FROM student Order BY sname")
result = cursor.fetchall()
print(*result,sep="\n")
வெளியீடு
(1, 'Akshay')
(2, 'Aravind')
(3, 'BASKAR')
(6, 'PRIYA')
(4, 'SAJINI')
(7, 'TARUN')
(5, 'VARUN')
5. SQL HAVING துணை நிலைக்கூறு
குழு சார்புகளைப் பொறுத்து தரவுகளை வடிகட்ட HAVING துணை நிலைக்கூற்று பயன்படுகிறது. இது
WHERE நிபந்தனை கூற்றை ஒத்ததாகும் ஆனால்
குழு சார்புகளுடன் பயன்படுகிறது. குழு சார்புகளை WHERE துணை நிலைக் கூற்றில் பயன்படுத்த முடியாது. ஆனால், HAVING துணை நிலைக் கூற்றில் பயன்படுத்த முடியும்.
எடுத்தக்காட்டு 15.4.2.5 -1
import sqlite3
connection =
sqlite3.connect("Academy.db")
cursor = connection.cursor()
cursor.execute("SELECT
GENDER,COUNT(GENDER) FROM Student GROUP BY GENDER HAVING
COUNT(GENDER)>3")
result = cursor.fetchall()
co = [i[0] for i in
cursor.description]
print(co)
print(result)
வெளியீடு
['gender', 'COUNT(GENDER)']
[('M', 5)]