SQL மூலம் தரவுகளைக் கையாளுதல் - பாடக் கண்ணோட்டம்
இந்த அத்தியாயம் பைத்தான் நிரலாக்க மொழியைப் பயன்படுத்தி SQLite3 தரவுத்தளத்துடன் எவ்வாறு வெற்றிகரமாக இணைப்பை ஏற்படுத்துவது, புதிய தரவுத்தள அட்டவணைகளை உருவாக்குவது மற்றும் பல்வேறு SQL கட்டளைகள் மூலம் தரவுகளைத் திறம்படக் கையாளுவது என்பதைப் பற்றி முழுமையாக விளக்குகிறது. மேலும் தரவுகளைப் புதுப்பித்தல், நீக்குதல் மற்றும் வினவப்பட்ட முக்கிய தரவு முடிவுகளை CSV கோப்புகளில் சேமிக்கும் முறைகளையும் இது விரிவாகக் கற்பிக்கிறது.
இந்தப் பாடத்தைப் படியுங்கள்
SQL மூலம் தரவுகளைக் கையாளுதல் பற்றி
நடுத்தரம் ~120 நிமிடப் படிப்பு
தற்கால மென்பொருள் உருவாக்கப் பணிகளில் உயர்தர நிரலாக்க மொழியையும் உறவுநிலை தரவுத்தளத்தையும் வெற்றிகரமாக ஒருங்கிணைப்பது இன்றியமையாத தேவையாகும். பைத்தான் போன்ற எளிய மற்றும் முக்கியத்துவம் வாய்ந்த நிரலாக்க மொழியையும், SQLite போன்ற இலகுவான மற்றும் கோப்பு அடிப்படையிலான தரவுத்தள மேலாண்மை அமைப்பையும் எவ்வாறு இணைக்க வேண்டும் என்பதைக் கற்பிக்கவே இந்த அத்தியாயம் முக்கியமாக வடிவமைக்கப்பட்டுள்ளது. இதன் மூலம் எளிய உரைக்கோப்புகளில் தரவுகளைச் சேமிக்கும் பாரம்பரிய முறைகளில் இருந்து மேம்பட்டு, பாதுகாப்பான, நெகிழ்வான மற்றும் திறமையான முறையில் தரவுகளை மேலாண்மை செய்யும் புதிய திறனை மாணவர்கள் மிக எளிதாகப் பெறுகின்றனர்.
இந்த அத்தியாயம் முந்தைய பாடங்களில் நீங்கள் கற்ற தரவுத்தளக் கருத்துருக்கள் மற்றும் SQL கட்டளைகளை பைத்தான் நிரல்களுடன் நேரடியாகவும் தர்க்கரீதியாகவும் இணைக்க உதவுகிறது. sqlite3 தொகுதியின் முக்கியத்துவத்தை விளக்கி, அதன் மூலம் தரவுத்தள இணைப்பு, கர்சர் தளம், பல்வேறு SQL வினவல்களை இயக்குதல் மற்றும் மீட்டெடுக்கப்பட்ட தரவுகளைக் கையாளுதல் போன்ற செயல்முறைகள் ஒன்றோடொன்று எவ்வாறு இணைகின்றன என்பதை இது தெளிவுபடுத்துகிறது. மேலும், தரவுத்தள வினவல்களின் முடிவுகளை CSV போன்ற உலகளாவிய உரைக்கோப்புகளாக மாற்றி சேமிக்கும் முறையையும் கற்றுத் தருவதன் மூலம் வெவ்வேறு பயன்பாடுகளுக்கு இடையிலான தரவுப் பரிமாற்றத்தின் அவசியத்தை மாணவர்கள் முழுமையாகப் புரிந்துகொள்கின்றனர்.
பள்ளிப் பொதுத்தேர்வு மற்றும் செய்முறைத் தேர்வு ஆகிய இரண்டின் நோக்கிலும் பார்க்கும்போது, இந்த அத்தியாயம் மிக முக்கியத்துவம் வாய்ந்த ஒரு பகுதியாகும். இதில் உள்ள sqlite3 தொகுதியின் fetchone(), fetchall() மற்றும் fetchmany() போன்ற தரவு மீட்புச் செயல்பாடுகளின் வேறுபாடுகள் மற்றும் அவற்றின் பயன்பாடுகள் அடிக்கடி கேட்கப்படும் வினாக்களாகும். மேலும், தரவுகளைப் புதுப்பித்தல், நீக்குதல் மற்றும் கட்டுப்பாடுகளுடன் கூடிய அட்டவணைகளை உருவாக்குதல் போன்ற செய்முறை சார்ந்த பகுதிகளை மாணவர்கள் நன்கு பயிற்சி செய்வதன் மூலம், பொதுத்தேர்வில் கேட்கப்படும் கோட்பாடு வினாக்கள் மற்றும் செய்முறைப் பயிற்சிகளில் முழுமையான மதிப்பெண்களை மிக எளிதாகப் பெற முடியும்.
நீங்கள் கற்பவை
- sqlite3 தொகுதியைப் பயன்படுத்தி பைத்தான் மற்றும் SQLite தரவுத்தளத்திற்கு இடையே இணைப்பை ஏற்படுத்துதல்.
- execute() செயல்பாட்டின் மூலம் SQL கட்டளைகளை இயக்கி புதிய அட்டவணைகளை உருவாக்குதல்.
- அளவுருவாக்கப்பட்ட வினவல்கள் (parameterized queries) மூலம் தரவுத்தளத்தில் புதிய பதிவுகளைப் பாதுகாப்பாகச் சேர்த்தல்.
- fetchone(), fetchall() மற்றும் fetchmany() ஆகியவற்றின் மூலம் தரவுகளை மீட்டெடுத்தல்.
- UPDATE மற்றும் DELETE கட்டளைகளைப் பயன்படுத்தித் தரவுத்தளப் பதிவுகளைப் புதுப்பித்தல் மற்றும் நீக்குதல்.
- தரவுத்தள வினவல் முடிவுகளை ஒரு CSV கோப்பில் வெற்றிகரமாக எழுதிக் கோப்பாகச் சேமித்தல்.
தொடங்குவதற்கு முன்
- உறவுநிலை தரவுத்தளக் கருத்துருக்கள் மற்றும் அவற்றின் அடிப்படைச் செயல்பாடுகள்.
- அடிப்படை SQL கட்டளைகளான CREATE, INSERT, SELECT, UPDATE மற்றும் DELETE பற்றிய அறிவு.
- பைத்தான் மொழியில் அடிப்படை நிரலாக்கம், கட்டுப்பாட்டுக் கட்டமைப்புகள் மற்றும் கோப்பு கையாளுதல்.
இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்
SQL மூலம் தரவுகளைக் கையாளுதல் — விரிவான விளக்கம்
பைத்தான் மற்றும் எச்கியூஎல் (SQL) தரவுத்தள ஒருங்கிணைப்பின் முழுமையான கண்ணோட்டம்
SQLite மற்றும் பைத்தான் இணைப்பை வெற்றிகரமாக ஏற்படுத்துதல்
மென்பொருள் பயன்பாடுகளை உருவாக்கும் போது பைத்தான் நிரலாக்க மொழியில் உள்ளியணைந்த வரம்பற்ற பயன்பாடுகளைக் கொண்ட sqlite3 தொகுதி மூலம் தரவுத்தளத்துடன் இணைப்பை ஏற்படுத்துவது முதன்மையான மற்றும் மிக முக்கியமான தொடக்கப் படியாகும். sqlite3.connect() செயல்பாட்டைப் பயன்படுத்தி கணினியில் சேமிக்கப்பட்டுள்ள தரவுத்தளக் கோப்புடன் நிரலை வெற்றிகரமாக இணைக்க முடியும், மேலும் அவ்வாறு குறிப்பிட்ட தரவுத்தளக் கோப்பு இல்லை என்றால் பைத்தான் தானாகவே புதிய கோப்பை உருவாக்கி இணைக்கும். பைத்தானும் தரவுத்தளமும் ஒன்றிணைந்து செயல்படும்போது, தரவுகளைப் பாதுகாப்பாகவும் வேகமாகவும் கையாள முடிகிறது. அதன் பின்னர் தரவுத்தளத்தின் பதிவுகளை வரிசையாகக் கையாளவும் வினவல்களை இயக்கவும் உதவும் கட்டுப்பாட்டு அமைப்பான கர்சர் (Cursor) பொருள் உருவாக்கப்படுகிறது. இந்த கர்சர் பொருள் மட்டுமே தரவுத்தளத்தின் மீது அனைத்து வகையான SQL மற்றும் DDL கட்டளைகளையும் வெற்றிகரமாக இயக்கவும், அவற்றின் முடிவுகளைப் பெற்றுக்கொள்ளவும் பயன்படும் மிக முக்கியமான பிரதான கருவியாகச் செயல்படுகிறது.
அட்டவணைகளை உருவாக்குதல் மற்றும் புதிய தரவுப் பதிவுகளைச் சேர்த்தல்
உருவாக்கப்பட்ட வெற்றுத் தரவுத்தளத்தில் முறையான தகவல்களைச் சேமிக்க அட்டவணைகள் கண்டிப்பாக உருவாக்கப்பட வேண்டும். CREATE TABLE கட்டளையுடன் கூடிய பொருத்தமான SQL வினவல் கர்சரின் execute() செயல்பாட்டின் மூலம் இயக்கப்பட்டு, புதிய தரவுத்தள அட்டவணைகள் முறையாக உருவாக்கப்படுகின்றன. அதன் பின்னர் INSERT INTO கட்டளையைப் பயன்படுத்திப் புதிய பதிவுகள் ஒவ்வொன்றாகச் சேர்க்கப்படுகின்றன; இதில் பயனர் நேரடியாக உள்ளீடு செய்யும் தரவுகளைப் பாதுகாப்பான முறையில் பெறவும் மற்றும் தீங்கிழைக்கும் குறியீடுகளைத் தவிர்க்கவும் கேள்விக்குறி (?) குறியீடு கொண்ட அளவுருவாக்கப்பட்ட வினவல்கள் (parameterized queries) அல்லது பெயரிடப்பட்ட வினவல்கள் பயன்படுத்தப்படுகின்றன. பயனரிடமிருந்து உள்ளீடுகளைப் பெற்று நேரடியாகத் தரவுத்தளத்தில் சேர்க்கும்போது பாதுகாப்புக் காரணங்களுக்காக இந்த அளவுருக்கள் அதிகம் பரிந்துரைக்கப்படுகின்றன. இத்தகைய முன்னெச்சரிக்கை முறைகள் தரவுத்தளத்தின் ஒட்டுமொத்தப் பாதுகாப்பினையும் மற்றும் ஒருமைப்பாட்டினையும் முழுமையாக உறுதி செய்கிறது.
தரவுகளை மீட்டெடுத்தல் மற்றும் பல்வேறு தரவு மீட்புச் செயல்பாடுகள்
அட்டவணைகளில் சேமிக்கப்பட்டுள்ள பல்வேறு தரவுகளைத் திரும்பப் பெற SELECT கட்டளை கொண்ட SQL வினவல் முக்கியமாகப் பயன்படுத்தப்படுகிறது. இந்த வினவல் வெற்றிகரமாக இயக்கப்பட்ட பின், தரவுத்தளத்தில் இருந்து தரவுகளை மீட்டெடுக்க மூன்று வெவ்வேறு முக்கிய செயல்பாடுகள் பயன்படுகின்றன. முதலாவதாக, fetchone() செயல்பாடு முடிவுத் தொகுதியிலிருந்து ஒரு நேரத்தில் ஒரு வரியை அல்லது பதிவை மட்டும் மீட்டெடுத்துத் தரும்; முடிவுத் தொகுதி காலியாக இருக்கும்போது இச்செயல்பாடு 'None' என்ற மதிப்பைத் திருப்பி அனுப்பும். இரண்டாவதாக, fetchall() செயல்பாடு அனைத்து வரிக்களையும் மீட்டெடுத்து டியூபில்களின் ஒரு எளிய பட்டியலாக நமக்கு வழங்கும்; மற்றும் மூன்றாவதாக, fetchmany(n) செயல்பாடு பயனர் குறிப்பிடும் எண்ணிக்கையிலான குறிப்பிட்ட வரிக்களை மட்டும் மீட்டெடுத்துத் தரும். இச்செயல்பாடுகள் அனைத்தும் தரவுத்தளப் பதிவுகளை எளிதாக ஆய்வு செய்ய உதவுகின்றன.
தரவுகளைப் புதுப்பித்தல் மற்றும் தேவையற்ற பதிவுகளை நீக்குதல் செயல்பாடுகள்
தரவுத்தளத்தில் ஏற்கனவே சேமிக்கப்பட்டுள்ள பழைய தகவல்களை மாற்றியமைக்க அல்லது முழுமையாக நீக்க DML கட்டளைகளான UPDATE மற்றும் DELETE ஆகியவை முறையே பயன்படுத்தப்படுகின்றன. குறிப்பிட்ட நிபந்தனைகளின் அடிப்படையில் தரவுகளைப் புதுப்பிக்க SET மற்றும் WHERE துணைக் கூறுகள் பெரிதும் உதவுகின்றன, மேலும் தேவையற்ற பதிவுகளை வரியாக நீக்க DELETE கட்டளை பயன்படுகிறது. தரவுத்தளத்தில் ஏதேனும் பிழை ஏற்பட்டால், மாற்றங்களைத் தடுத்து பழைய நிலைக்குத் திரும்பக் கொண்டுவர rollback() கட்டளையைப் பயன்படுத்தலாம். இந்த இரண்டு செயல்பாடுகளும் தரவுத்தளத்தில் நிரந்தரமான மாற்றங்களை ஏற்படுத்தவும், கோப்பில் தரவுகளைப் பத்திரமாகச் சேமிக்கவும் connection.commit() கட்டளையைக் கண்டிப்பாகப் பயன்படுத்த வேண்டும், அதன் பின்னரே தரவுகள் முழுமையாகச் சேமிக்கப்பட்டு இணைப்பு பாதுகாப்பாக மூடப்படும்.
வினவல் முடிவுகளை CSV கோப்புகளாக மாற்றிச் சேமித்தல்
தரவுத்தளத்திலிருந்து மீட்டெடுக்கப்பட்ட முக்கியமான வினவல் முடிவுகளைப் பிற பயன்பாடுகளுடன் எளிதாகவும் வேகமாகவும் பகிர்வதற்கு அவற்றைக் கோப்புகளாக மாற்றுவது மிகவும் பயனுள்ள உலகளாவிய முறையாகும். பைத்தானின் உள்ளியணைந்த csv தொகுதியைப் பயன்படுத்தி, தரவுத்தளத்தின் வினவல் முடிவுகள் மற்றும் அட்டவணையின் தலைப்பு விவரங்களை (cursor.description மூலம்) முறையான வரிகளாகவும் நெடுவரிசைகளாகவும் CSV கோப்பில் எழுதலாம். இவ்வாறு சேமிக்கப்படும் கோப்புகள் குறைவான நினைவக இடத்தை எடுத்துக்கொள்வதோடு, தரவுகளை எளிதாக இறக்குமதி மற்றும் ஏற்றுமதி செய்ய உதவுகின்றன. இந்த வசதி தரவுத்தளத் தரவுகளை எக்செல் போன்ற விரிதாள் மென்பொருட்களில் நேரடியாகத் திறந்து ஆய்வு செய்யவும் மற்றும் பிறருக்குத் தேவையான அறிக்கைகளை உருவாக்கவும் பெரிதும் உதவுகிறது.
தவிர்க்க வேண்டிய பொதுவான தவறுகள்
- பிழை: commit() கட்டளையைப் பயன்படுத்தாமல் தரவுகளைப் புதுப்பித்தல் அல்லது சேர்த்தல். திருத்தம்: தரவுத்தளத்தில் மாற்றங்கள் நிரந்தரமாகச் சேமிக்கப்பட connection.commit() கட்டளையைக் கண்டிப்பாகப் பயன்படுத்த வேண்டும்.
- பிழை: SQL வினவல்களில் பயனர் உள்ளீடுகளை நேரடியாக இணைத்துப் பயன்படுத்துவது. திருத்தம்: SQL Injection தாக்குதல்களைத் தடுக்க அளவுருவாக்கப்பட்ட வினவல்களை (?) மட்டுமே பயன்படுத்த வேண்டும்.
- பிழை: தரவுத்தளச் செயல்பாடுகள் முடிந்த பின் இணைப்பை மூடாமல் விடுவது. திருத்தம்: நினைவகத்தை விடுவிக்கவும் தரவுச் சிதைவைத் தடுக்கவும் connection.close() மூலம் இணைப்பை எப்போதும் மூட வேண்டும்.
- பிழை: fetchone() போன்ற செயல்பாடுகளைத் தொடர்ந்து பயன்படுத்தும்போது முடிவுத் தொகுதி காலியாக இருப்பதைச் சரிபார்க்காதது. திருத்தம்: முடிவுத் தொகுதி காலியாக இருக்கும்போது 'None' மதிப்பு திரும்பப் பெறப்படுவதால், அதற்கான சரிபார்ப்பை மேற்கொள்ள வேண்டும்.
இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
பைத்தானில் SQLite தரவுத்தளத்தை இணைப்பது எப்படி?
பைத்தானில் SQLite தரவுத்தளத்தை இணைக்க முதலில் நமது நிரலில் sqlite3 தொகுதியை முறையாக இறக்குமதி செய்ய வேண்டும். அதன்பின்னர், sqlite3.connect() செயல்பாட்டைப் பயன்படுத்தித் தேவையான தரவுத்தளக் கோப்புடன் புதிய இணைப்பை எளிதாக ஏற்படுத்தலாம். நாம் குறிப்பிட்ட தரவுத்தளக் கோப்பு கணினியில் ஏற்கனவே இல்லை என்றால், பைத்தான் தானாகவே புதிய கோப்பை உருவாக்கி இணைப்பை வெற்றிகரமாகத் தொடங்கும்.
fetchone() மற்றும் fetchall() இடையே உள்ள வேறுபாடு என்ன?
fetchone() செயல்பாடு தரவுத்தள வினவல் முடிவுகளிலிருந்து ஒரு நேரத்தில் ஒரு குறிப்பிட்ட வரியை அல்லது பதிவை மட்டுமே மீட்டெடுத்து நமக்கு வழங்கும். ஆனால், fetchall() செயல்பாடு வினவலின் அனைத்து முடிவுகளையும் முழுமையாக மீட்டெடுத்து, அவற்றை டியூபில்களின் ஒரு எளிய பட்டியலாக நமக்குத் திருப்பி வழங்கும். முடிவுத் தொகுதி காலியாக இருக்கும்போது fetchone() செயல்பாடு எப்போதும் 'None' என்ற சிறப்பான மதிப்பைத் திருப்பி அனுப்பும்.
தரவுத்தளத்தில் செய்த மாற்றங்கள் ஏன் சேமிக்கப்படுவதில்லை?
தரவுத்தளத்தில் INSERT, UPDATE அல்லது DELETE போன்ற தரவுக் கையாளுதல் செயல்பாடுகளைச் செய்த பின்னர், அந்த மாற்றங்களை நிரந்தரமாகச் சேமிக்க connection.commit() கட்டளையைக் கண்டிப்பாகப் பயன்படுத்த வேண்டும். இந்த முக்கிய கட்டளையை இயக்கத் தவறினால், நாம் செய்த மாற்றங்கள் அனைத்தும் தரவுத்தளத்தில் சேமிக்கப்படாமல் தற்காலிகமாகவே இருக்கும், மேலும் இணைப்பை மூடும் போது அவை அனைத்தும் முழுமையாக அழிந்துவிடும்.
SQL Injection தாக்குதலை பைத்தானில் தடுப்பது எப்படி?
SQL Injection போன்ற தீவிரமான பாதுகாப்புத் அச்சுறுத்தல்களைத் தவிர்க்க, வினவல்களில் பயனர் உள்ளீடுகளை நேரடியாக இணைத்து இயக்குவதைத் தவிர்க்க வேண்டும். அதற்குப் பதிலாக, கேள்விக்குறி (?) குறியீட்டைக் கொண்ட அளவுருவாக்கப்பட்ட வினவல்களைப் (parameterized queries) பயன்படுத்தித் தேவையான தரவுகளைப் பாதுகாப்பான முறையில் தரவுத்தளத்திற்கு அனுப்ப வேண்டும். இது நமது தரவுத்தளத்தின் ஒட்டுமொத்தப் பாதுகாப்பை முழுமையாக உறுதி செய்ய உதவும்.
தரவுத்தள வினவல் முடிவுகளை CSV கோப்பாக சேமிப்பது எப்படி?
தரவுத்தளத்திலிருந்து மீட்டெடுக்கப்பட்ட வினவல் முடிவுகளை CSV கோப்பாகச் சேமிக்க பைத்தானின் உள்ளியணைந்த csv தொகுதியைப் பயன்படுத்தலாம். இதற்கென திறக்கப்பட்ட புதிய கோப்பில் csv.writer() தலாட்டை உருவாக்கி, அதன் மூலம் தரவுத்தளத்தின் முடிவுகள் மற்றும் நெடுவரிசைத் தலைப்புகளை முறையான வரிகளாகவும் நெடுவரிசைகளாகவும் அந்த கோப்பினுள் மிக எளிதாக எழுதிச் சேமிக்க முடியும். இது எக்செல் போன்ற விரிதாள் மென்பொருட்களில் நேரடியாகத் திறக்க உதவும்.
sqlite3 தொகுதியில் கர்சரின் பங்கு என்ன?
sqlite3 தொகுதியில் கர்சர் (Cursor) என்பது தரவுத்தளப் பதிவுகளின் மீது செயல்படும் ஒரு மிக முக்கியமான கட்டுப்பாட்டு அமைப்பாகும். இதன் மூலம் மட்டுமே அனைத்து வகையான SQL கட்டளைகளையும் execute() செயல்பாடு வழியாக இயக்க முடியும். மேலும், தரவுத்தளத்திலிருந்து வினவல் முடிவுகளை மீட்டெடுக்கவும் மற்றும் அட்டவணைகளை நிர்வகிக்கவும் இந்த கர்சர் தளம் மிகவும் அவசியமான ஒரு கருவியாகப் பயன்படுகிறது.
கடைசியாகப் புதுப்பிக்கப்பட்டது 22 ஆகஸ்ட் 2026