2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
sqlite3 — SQLite आँकडाधारानाम् कृते DB-API 2.0 अन्तरफलकं — Python 3.12.4 दस्तावेजीकरणं
sqlite3
— SQLite आँकडाधारानाम् कृते DB-API 2.0 अन्तरफलकम्स्रोतसङ्केतः : १. लिब/स्क्लाइट३/ २. स्रोतसङ्केतस्थानम्:लिब/sqlite3/ 1।
SQLite एकः C पुस्तकालयः अस्ति यः हल्कं डिस्क-आधारितं आँकडाधारं प्रदाति यस्य पृथक् सर्वरप्रक्रियायाः आवश्यकता नास्ति तथा च SQL प्रश्नभाषायाः अमानकरूपान्तरस्य उपयोगेन दत्तांशकोशं प्राप्तुं अनुमतिं ददाति केचन अनुप्रयोगाः आन्तरिकदत्तांशसञ्चयार्थं SQLite इत्यस्य उपयोगं कर्तुं शक्नुवन्ति । SQLite इत्यस्य उपयोगेन अनुप्रयोगस्य प्रोटोटाइप् करणं अपि च ततः कोडं PostgreSQL अथवा Oracle इत्यादिषु बृहत्तरेषु आँकडाधारेषु पोर्ट् कर्तुं शक्यते ।
SQLite एकः C भाषा पुस्तकालयः अस्ति यः हल्कं डिस्क-आधारितं दत्तांशकोशं प्रदाति यस्य पृथक् सर्वरप्रक्रियायाः आवश्यकता नास्ति तथा च SQL प्रश्नभाषायाः अमानकरूपान्तरस्य उपयोगेन दत्तांशकोशं प्राप्तुं अनुमतिं ददाति केचन अनुप्रयोगाः आन्तरिकदत्तांशसञ्चयार्थं SQLite इत्यस्य उपयोगं कर्तुं शक्नुवन्ति । तदतिरिक्तं, भवान् SQLite इत्यस्य उपयोगं कृत्वा एप्लिकेशनस्य प्रोटोटाइप् कर्तुं शक्नोति ततः कोडं PostgreSQL अथवा Oracle इत्यादिषु विशाले आँकडाधारे प्रवासयितुं शक्नोति ।
दsqlite3
module इत्यस्य लेखनं Gerhard Häring इत्यनेन कृतम् । इदं द्वारा वर्णितस्य DB-API 2.0 विनिर्देशस्य अनुरूपं SQL अन्तरफलकं प्रदातिपीईपी २४९, तथा च SQLite 3.7.15 अथवा नूतनतरस्य आवश्यकता अस्ति ।
sqlite3 मॉड्यूल Gerhard Häring इत्यनेन लिखितम् । एतत् SQL अन्तरफलकं प्रदाति यत् PEP 249 द्वारा वर्णितस्य DB-API 2.0 विनिर्देशस्य अनुरूपं भवति, तथा च SQLite संस्करणं 3.7.15 अथवा उच्चतरस्य आवश्यकता भवति ।
अस्मिन् दस्तावेजे चत्वारः मुख्यखण्डाः सन्ति : अस्मिन् दस्तावेजे मुख्यतया निम्नलिखितचत्वारि मुख्यखण्डाः सन्ति
पाठ्यक्रमकथं प्रयोगः करणीयः इति शिक्षयतिsqlite3
मॉड्यूल।पाठ्यक्रमभागः sqlite3 मॉड्यूलस्य उपयोगः कथं करणीयः इति शिक्षयति ।
सन्दर्भःअस्मिन् मॉड्यूले परिभाषितानि वर्गाणि कार्याणि च वर्णयति ।
refer toविभागे अस्मिन् मॉड्यूल् द्वारा परिभाषितवर्गाः कार्याणि च वर्णिताः सन्ति ।
कथं करणीयम् इति मार्गदर्शकाःविशिष्टकार्यं कथं सम्पादयितव्यम् इति विवरणं ददाति।
संचालन मार्गदर्शकखण्डेषु विशिष्टकार्यं कथं सम्पादयितव्यम् इति विस्तरेण वर्णितम् अस्ति ।
विवरणलेनदेननियन्त्रणस्य गहनपृष्ठभूमिः प्रदाति ।
व्याख्यातिअस्मिन् खण्डे व्यवहारनियन्त्रणस्य पृष्ठभूमिज्ञानस्य गहनपरिचयः प्रदत्तः अस्ति ।
अपि द्रष्टव्यम्
https://www.sqlite.org इत्यत्र इत्यत्र
SQLite जालपुटम्; दस्तावेजीकरणं समर्थितस्य SQL बोलीयाः कृते वाक्यविन्यासस्य उपलब्धानां च आँकडाप्रकारानाम् वर्णनं करोति ।
SQLite इत्यस्य जालपुटे समर्थितानां SQL बोलीनां वाक्यविन्यासः उपलब्धदत्तांशप्रकारः च वर्णितः अस्ति;
SQL ट्यूटोरियलSQL ट्यूटोरियल
SQL वाक्यविन्यासं ज्ञातुं पाठ्यक्रमः, सन्दर्भः उदाहरणानि च।
SQL वाक्यविन्यासं ज्ञातुं पाठ्यक्रमाः, सन्दर्भाः, उदाहरणानि च ।
पीईपी २४९- डाटाबेस एपीआई विनिर्देशः 2.0 PEP 249 - डाटाबेस एपीआई विनिर्देशः 2.0
मार्क-आन्द्रे लेम्बर्ग् द्वारा लिखित पीईपी।
अस्मिन् पाठ्यक्रमे भवन्तः इत्यस्य database निर्मास्यन्ति मोंटी पायथन् चलचित्रम् मूलभूतस्य उपयोगेनsqlite3
कार्यक्षमता। एतत् दत्तांशकोशसंकल्पनानां मौलिकबोधं गृह्णाति, यत्र...कर्सरतथाव्यवहाराः.
अस्मिन् पाठ्यक्रमे भवान् Monty Python चलच्चित्रस्य विषये एकं दत्तांशकोशं निर्मातुं मूलभूतं sqlite3 कार्यक्षमतायाः उपयोगं करिष्यति । अयं पाठ्यक्रमः कल्पयति यत् भवतः दत्तांशकोशसंकल्पनानां मूलभूतं ज्ञानं वर्तते, यत्र कर्सराः, व्यवहाराः च सन्ति ।
प्रथमं नूतनं दत्तांशकोशं निर्माय अनुमतिं दातुं दत्तांशकोशसंयोजनं उद्घाटयितुं आवश्यकम्sqlite3
तया सह कार्यं कर्तुं । आह्वानम्sqlite3.connect () 1.1.दत्तांशकोशेन सह संयोजनं निर्मातुंtutorial.db
वर्तमानकार्यनिर्देशिकायां, अन्तर्निहितरूपेण तस्य निर्माणं यदि नास्ति:
प्रथमं नूतनं database रचयित्वा database connection उद्घाटयितुं आवश्यकं येन sqlite3 तया सह अन्तरक्रियां कर्तुं शक्नोति । वर्तमानकार्यनिर्देशिकायां tutorial.db दत्तांशकोशेन सह संयोजनं निर्मातुं sqlite3.connect() इति आह्वयन्तु, यदि दत्तांशकोशः नास्ति तर्हि अन्तर्निहितरूपेण मृदुतया च स्वयमेव रचयन्तु:
- import sqlite3
- con = sqlite3.connect("tutorial.db")
प्रत्यागताःसंबन्धःवस्तुcon
डिस्क-स्थले दत्तांशकोशेन सह संयोजनं प्रतिनिधियति ।
प्रत्यागतं Connection ऑब्जेक्ट् (अस्मिन् सन्दर्भे con इति नाम) डिस्क मध्ये दत्तांशकोशेन सह संयोजनं प्रतिनिधियति ।
अर्थ SQL कथनानि निष्पादयन्तु तथाSQL प्रश्नेभ्यः परिणामान् आनयन्तु, अस्माभिः database cursor इत्यस्य उपयोगः करणीयः भविष्यति । आह्वानम्कन्.कर्सर() २.सृजति इतिकर्सर:
SQL स्टेट्मेण्ट् निष्पादयितुं SQL क्वेरी इत्यस्मात् परिणामान् प्राप्तुं च अस्माभिः database cursors इत्यस्य उपयोगः आवश्यकः । Cursor निर्मातुं con.cursor() इति आह्वयन्तु:
cur = con.cursor()
इदानीं यदा अस्माकं कृते database connection तथा cursor प्राप्तम् अस्ति तदा वयं database table निर्मातुम् अर्हतिmovie
शीर्षकस्य, विमोचनवर्षस्य, समीक्षास्कोरस्य च स्तम्भैः सह । सरलतायै वयं केवलं सारणीघोषणायां स्तम्भनामानां उपयोगं कर्तुं शक्नुमः – धन्यवादःलचीला टङ्कनम् SQLite इत्यस्य विशेषता, दत्तांशप्रकारं निर्दिष्टुं वैकल्पिकम् अस्ति । निष्पादयतुCREATE TABLE
आह्वानं कृत्वा कथनम्cur.execute(...) २. २. २. २. २. २. २. २.:
इदानीं यदा अस्माकं कृते database connection तथा cursor अस्ति तदा वयं title, release year, review score इत्यादीनां स्तम्भैः सह movie इति नामकं database table निर्मातुम् अर्हति । सरलीकरणाय वयं प्रत्यक्षतया सारणीघोषणायां स्तम्भनामानां उपयोगं कर्तुं शक्नुमः - SQLite इत्यस्य लचीलस्य टङ्कनविशेषतायाः कारणात् आँकडाप्रकारं निर्दिष्टुं वैकल्पिकम् अस्ति । cur.execute(...) इत्यस्य आह्वानं कृत्वा CREATE TABLE स्टेट्मेण्ट् निष्पादयन्तु:
cur.execute("CREATE TABLE movie(title, year, score)")
वयं इति पृच्छन् नूतनं सारणी निर्मितम् इति सत्यापयितुं शक्नुमःsqlite_master
table built-in to SQLite, यस्मिन् इदानीं कृते प्रविष्टिः भवितुमर्हतिmovie
सारणी परिभाषा (द्रष्टव्यम्योजनासारणी इति विस्तरेण कृते)। तत् प्रश्नं आह्वानं कृत्वा निष्पादयन्तुcur.execute(...) २. २. २. २. २. २. २. २., परिणामं नियुक्तं कुर्वन्तुres
, आह्वानं चres.fetchone () ९.परिणामी पङ्क्तिं आनेतुं : १.
वयं SQLite इत्यस्य अन्तःनिर्मितं sqlite_master सारणीं पृच्छन् नूतनं सारणी निर्मितम् इति सत्यापयितुं शक्नुमः, यस्मिन् इदानीं चलचित्रसारणीपरिभाषायाः प्रविष्टयः भवेयुः (विवरणार्थं स्कीमासारणीं पश्यन्तु) cur.execute(...) इति आह्वयित्वा प्रश्नं निष्पादयन्तु, परिणामान् res इत्यत्र नियुक्तं कुर्वन्तु, परिणामपङ्क्तयः प्राप्तुं res.fetchone() इति आह्वयन्तु च:
>>>
- >>> res = cur.execute("SELECT name FROM sqlite_master")
- >>> res.fetchone()
- ('movie',)
वयं द्रष्टुं शक्नुमः यत् सारणी निर्मितवती अस्ति, यतः प्रश्नः a प्रेषयतितुपले सारणीयाः नाम युक्तम् । यदि वयं पृच्छामःsqlite_master
अस्तित्वहीनस्य सारणीयाः कृतेspam
, res.fetchone()
आगमिष्यतिNone
:
वयं द्रष्टुं शक्नुमः यत् तालिका सफलतया निर्मितवती यतः प्रश्नः सारणीनाम युक्तं tuple प्रत्यागच्छत् । यदि वयं sqlite_master इत्यस्य अस्तित्वहीनस्य सारणीयाः (यथा spam) कृते प्रश्नं कुर्मः तर्हि res.fetchone() None इति प्रेषयिष्यति ।
>>>
- >>> res = cur.execute("SELECT name FROM sqlite_master WHERE name='spam'")
- >>> res.fetchone() is None
- True
अधुना, an निष्पादयित्वा SQL literals इति रूपेण आपूर्तिकृतानां data इत्यस्य द्वौ पङ्क्तौ योजयन्तुINSERT
कथनम्, पुनः एकवारं आह्वानेनcur.execute(...) २. २. २. २. २. २. २. २.:
अधुना, INSERT स्टेट्मेण्ट् निष्पादयित्वा (पुनः cur.execute(...) इति आह्वयन्) SQL लिटर्स् इति रूपेण प्रदत्तानां आँकडानां पङ्क्तिद्वयं योजयन्तु:
- cur.execute("""
- INSERT INTO movie VALUES
- ('Monty Python and the Holy Grail', 1975, 8.2),
- ('And Now for Something Completely Different', 1971, 7.5)
- """)
दINSERT
स्टेट्मेण्ट् अन्तर्निहितरूपेण व्यवहारं उद्घाटयति, यत् परिवर्तनस्य दत्तांशकोशे रक्षितुं पूर्वं प्रतिबद्धं कर्तव्यम् (द्रष्टव्यम्व्यवहारनियन्त्रणम्विस्तरेण कृते)। आह्वानम्con.commit () २.व्यवहारं कर्तुं संयोजनवस्तुनः उपरि:
INSERT कथनं अन्तर्निहितरूपेण स्वयमेव च एकं लेनदेनं आरभते यत् परिवर्तनस्य दत्तांशकोशे रक्षितुं पूर्वं प्रतिबद्धं कर्तव्यं भवति (विवरणार्थं लेनदेननियन्त्रणं पश्यन्तु) व्यवहारं प्रतिबद्धुं संयोजनवस्तुनि con.commit() इति आह्वयन्तु:
con.commit()
वयं a इत्यस्य कार्यान्वयनेन दत्तांशः सम्यक् सम्मिलितः इति सत्यापयितुं शक्नुमःSELECT
उत्प्रेक्षा। इदानीं परिचितं प्रयोजयन्तुcur.execute(...) २. २. २. २. २. २. २. २.परिणामं नियुक्तुंres
, आह्वानं चres.fetchall () ९.सर्वाणि परिणामीपङ्क्तयः प्रत्यागन्तुं:
वयं SELECT प्रश्नं निष्पादयित्वा दत्तांशः सम्यक् सम्मिलितः इति सत्यापयितुं शक्नुमः । इदानीं परिचितस्य cur.execute(...) इत्यस्य उपयोगेन res कृते परिणामान् नियुक्तं कुर्वन्तु तथा च सर्वाणि परिणामपङ्क्तयः प्रत्यागन्तुं res.fetchall() इति आह्वयन्तु:
>>>
- >>> res = cur.execute("SELECT score FROM movie")
- >>> res.fetchall()
- [(8.2,), (7.5,)]
परिणामः कसूचीद्वयोःtuple
s, एकः प्रति पङ्क्तिः, प्रत्येकं तस्याः पङ्क्तिः युक्तःscore
मूल्यम्।
परिणामः द्वयोः ट्युपलयोः सूची भवति, प्रत्येकं पङ्क्तौ एकः, प्रत्येकं ट्युपलः च तस्याः पङ्क्तौ स्कोरमूल्यं युक्तम् ।
अधुना, आह्वानं कृत्वा त्रीणि अपि पङ्क्तयः निवेशयन्तुcur.executeबहु(...):
अधुना, cur.executemany(...) इति आह्वयन् आँकडानां त्रीणि अपि पङ्क्तयः सम्मिलितं कुर्वन्तु:
- data = [
- ("Monty Python Live at the Hollywood Bowl", 1982, 7.9),
- ("Monty Python's The Meaning of Life", 1983, 7.5),
- ("Monty Python's Life of Brian", 1979, 8.0),
- ]
- cur.executemany("INSERT INTO movie VALUES(?, ?, ?)", data)
- con.commit() # Remember to commit the transaction after executing INSERT.
तत् अवलोकयतु?
स्थानधारकाणां उपयोगः बन्धनार्थं भवतिdata
प्रश्नाय । इत्यस्य स्थाने सर्वदा स्थानधारकाणां उपयोगं कुर्वन्तुस्ट्रिंग् स्वरूपणम्पायथन् मूल्यानि SQL कथनेषु बन्धयितुं, परिहारायSQL इन्जेक्शन आक्रमणानि(पश्यतुSQL प्रश्नेषु मूल्यानि बाइण्ड् कर्तुं प्लेसहोल्डर् इत्यस्य उपयोगः कथं करणीयःअधिकविवरणार्थं)।
ध्यानं कुर्वन्तु यत् ?स्थानधारकस्य उपयोगः प्रश्ने दत्तांशं बन्धयितुं भवति । SQL इन्जेक्शन आक्रमणं परिहरितुं Python मूल्यानि SQL कथनेषु बन्धयितुं स्ट्रिंग् स्वरूपणस्य स्थाने सदैव स्थानधारकाणां उपयोगं कुर्वन्तु (अधिकविवरणार्थं "SQL प्रश्नेषु स्थानधारकाणां उपयोगेन मूल्यानि कथं बन्धयितुं" पश्यन्तु)
वयं a इत्यस्य कार्यान्वयनेन नूतनाः पङ्क्तयः सम्मिलिताः इति सत्यापयितुं शक्नुमःSELECT
query, अस्मिन् समये प्रश्नस्य परिणामानां उपरि पुनरावृत्तिः भवति:
वयं SELECT प्रश्नं निष्पादयित्वा नूतनपङ्क्तिः सम्मिलितवती इति सत्यापयितुं शक्नुमः, अस्मिन् समये वयं प्रश्नपरिणामानां उपरि पुनरावृत्तिं करिष्यामः:
>>>
- >>> for row in cur.execute("SELECT year, title FROM movie ORDER BY year"):
- ... print(row)
- (1971, 'And Now for Something Completely Different')
- (1975, 'Monty Python and the Holy Grail')
- (1979, "Monty Python's Life of Brian")
- (1982, 'Monty Python Live at the Hollywood Bowl')
- (1983, "Monty Python's The Meaning of Life")
प्रत्येकं पङ्क्तिः द्विवस्तु भवतितुपलेइत्यस्य(year, title)
, प्रश्ने चयनितस्तम्भानां मेलनं कृत्वा ।
प्रत्येकं पङ्क्तिः द्वौ तत्त्वौ (वर्षं, शीर्षकं) युक्तः ट्युपलः भवति, यः प्रश्ने चयनितस्तम्भेन सह मेलति ।
अन्ते, आह्वानं कृत्वा दत्तांशकोशः डिस्क मध्ये लिखितः इति सत्यापयन्तुcon.close() २. २.विद्यमानं संयोजनं बन्दं कर्तुं, नूतनं उद्घाटयितुं, नूतनं कर्सरं निर्मातुं, ततः दत्तांशकोशं पृच्छितुं:
अन्ते आह्वानेनcon.close()
विद्यमानं दत्तांशकोशसंयोजनं बन्दं कर्तुं तथा च दत्तांशकोशः डिस्कमध्ये लिखितः इति सुनिश्चितं कर्तुं । ततः, नूतनं संयोजनं उद्घाट्य, नूतनं कर्सरं रचयन्तु, दत्तांशं सफलतया लिखितम् इति सत्यापयितुं दत्तांशकोशं पृच्छन्तु ।
>>>
- >>> con.close()
- >>> new_con = sqlite3.connect("tutorial.db")
- >>> new_cur = new_con.cursor()
- >>> res = new_cur.execute("SELECT title, year FROM movie ORDER BY score DESC")
- >>> title, year = res.fetchone()
- >>> print(f'The highest scoring Monty Python movie is {title!r}, released in {year}')
- The highest scoring Monty Python movie is 'Monty Python and the Holy Grail', released in 1975
- >>> new_con.close()
इदानीं भवान् SQLite दत्तांशकोशं निर्मितवान् यस्य उपयोगेन...sqlite3
module, दत्तांशं सम्मिलितं कृत्वा तस्मात् मूल्यानि बहुविधरूपेण पुनः प्राप्तवन्तः ।
भवता इदानीं प्रयुक्तम्sqlite3
मॉड्यूल् SQLite-दत्तांशकोशं निर्माय तस्मात् आँकडान् विविधरीत्या सम्मिलितं कृत्वा पुनः प्राप्तं करोति [Retrieve? 】मूल्यम् ।
अपि द्रष्टव्यम्अपि द्रष्टव्यम्
कथं करणीयम् इति मार्गदर्शकाःअग्रे पठनार्थं : १. SQL प्रश्नेषु प्लेसहोल्डर् इत्यस्य उपयोगेन मूल्यानि कथं बाइण्ड् कर्तव्यम्:
SQL प्रश्नेषु मूल्यानि बाइण्ड् कर्तुं प्लेसहोल्डर् इत्यस्य उपयोगः कथं करणीयः
SQL प्रश्नेषु प्लेसहोल्डर् इत्यस्य उपयोगेन मूल्यानि कथं बाइण्ड् कर्तव्यम्:
कस्टम् पायथन् प्रकारान् SQLite मूल्येषु कथं अनुकूलितुं शक्यते
कस्टम् पायथन् प्रकारं SQLite मूल्ये कथं अनुकूलितुं शक्यते:
SQLite मूल्यानि कस्टम् पायथन् प्रकारेषु कथं परिवर्तयितव्यानि
SQLite मूल्यं कस्टम् पायथन् प्रकारे कथं परिवर्तयितुं शक्यते:
संयोजनसन्दर्भप्रबन्धकस्य उपयोगः कथं भवति
संयोजनसन्दर्भप्रबन्धकस्य उपयोगः कथं करणीयः : १.
पङ्क्तिकारखानानां निर्माणं उपयोगः च कथं करणीयः
पङ्क्तिकारखानानां निर्माणं उपयोगः च कथं करणीयः : १.
विवरणव्यवहारनियन्त्रणस्य गहनपृष्ठभूमितायै ।
व्यवहारनियन्त्रणस्य गहनपृष्ठभूमिव्याख्यानम् : १.
sqlite3.connect(database, timeout=5.0, detect_types=0, isolation_level='DEFERRED', check_same_thread=True, factory=sqlite3.Connection, cached_statements=128, uri=False, *, autocommit=sqlite3.LEGACY_TRANSACTION_CONTROL)
SQLite दत्तांशकोशेन सह संयोजनं उद्घाटयन्तु एतत् कार्यं SQLite दत्तांशकोशेन सह संयोजनं उद्घाटयितुं उपयुज्यते ।
database (पथसदृशं वस्तु ) – उद्घाटनीयायाः दत्तांशकोशसञ्चिकायाः मार्गः । भवन्तः उत्तीर्णं कर्तुं शक्नुवन्ति":memory:"
to create anकेवलं स्मृतौ विद्यमानः SQLite दत्तांशकोशः, तस्य च संयोजनं उद्घाटयन्तु ।database (path-like object)
database (मार्गसदृशं वस्तु) २. — एषः एव उद्घाटनार्थं दत्तांशकोशसञ्चिकायाः मार्गः अस्ति ।भवन्तः उत्तीर्णं कर्तुं शक्नुवन्ति":memory:"
स्मृति-अन्तर्गतं SQLite-दत्तांशकोशं निर्मातुं तया सह सम्बद्धं .database(path-like object) उद्घाटयितुं च ।
समयसमाप्तिः (तारण) – एकं उत्थापयितुं पूर्वं संयोजनं कियत् सेकण्ड् प्रतीक्षितव्यम्OperationalError इति इति इति इति इति इति इति इति इति इति यदा मेजः ताडितः भवति। यदि अन्यः संयोजनः सारणीं परिवर्तयितुं व्यवहारं उद्घाटयति तर्हि तत् सारणी यावत् व्यवहारः प्रतिबद्धः न भवति तावत् ताडितः भविष्यति । पूर्वनिर्धारित पञ्चसेकण्ड्।timeout (float)
— यदा सारणी ताडितम् अस्ति तदा संयोजनं क्षिपतिOperationalError
पूर्वं कति सेकण्ड् प्रतीक्षितव्या। यदि अन्यः संयोजनः सारणीं परिवर्तयितुं व्यवहारं उद्घाटयति तर्हि यावत् व्यवहारः प्रतिबद्धः न भवति तावत् सारणी ताडिता भविष्यति । पूर्वनिर्धारितं मूल्यं पञ्च सेकेण्ड् अस्ति ।
detect_types इति इति इति इति इति इति इति इति इति (int) – किं कथं च इति नियन्त्रणं कुर्वन्तु दत्तांशप्रकाराः नहिमूलतः SQLite द्वारा समर्थितम्पञ्जीकृतपरिवर्तकानां उपयोगेन, पायथन् प्रकारेषु परिवर्तयितुं उपरि दृश्यन्तेरजिस्टर_परिवर्तक () . . तत् कस्मिन् अपि संयोजने (उपयोगेन) सेट् कुर्वन्तु|
, बिट्विसे वा) ofPARSE_DECLTYPES इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थःतथाPARSE_COLNAMES इति इति इति इति इति इतिएतत् सक्षमं कर्तुं । स्तम्भनाम उपरि प्राधान्यं लभतेघोषितप्रकाराः यदि द्वयोः ध्वजयोः सेट् भवति। उत्पन्नक्षेत्राणां कृते प्रकाराः ज्ञातुं न शक्यन्ते (उदाहरणार्थम्max(data)
), यदा अपिdetect_types इति इति इति इति इति इति इति इति इतिपैरामीटर् सेट् भवति;स्त्र तस्य स्थाने प्रत्यागमिष्यति। पूर्वनिर्धारितरूपेण (0
), प्रकारपरिचयः अक्षमः अस्ति ।detect_types (int)
— SQLite इत्यनेन ये दत्तांशप्रकाराः देशीरूपेण समर्थिताः न सन्ति, ते उपयोगाय लभ्यन्ते वा कथं वा इति नियन्त्रयतिregister_converter()
पञ्जीकृताः परिवर्तकाः तान् पायथन् प्रकारेषु परिवर्तयन्ति ।इति सेट् कुर्वन्तुPARSE_DECLTYPES
तथाPARSE_COLNAMES
any combination of (bitwise or इत्यस्य उपयोगेन|
) इति विशेषतां सक्षमं कर्तुं ।यदि ध्वजद्वयं सेट् भवति तर्हिसूची अधिकं प्राधान्यं गृह्णीयात्वक्तव्यम् प्रकारः।उत्पन्नप्रदेशानां कृते एते प्रकाराः ज्ञातुं न शक्यन्ते (उदा.max(data)
), सेट् अपिdetect_types
parameters इत्यस्य स्थाने तत् प्रत्यागमिष्यतिstr
प्रकारः। पूर्वनिर्धारितरूपेण (0), प्रकारपरिचयः अक्षमः भवति ।
अत्र निवेशयतु
अस्मिन् आङ्ग्लपरिच्छेदे "are looked up to" इति विषयः कः ?
अस्मिन् आङ्ग्लपरिच्छेदे "are looked up to" इत्यस्य विषयः ते "SQLite द्वारा देशीरूपेण समर्थिताः न भवन्ति (SQLite द्वारा देशीरूपेण समर्थिताः न दत्तांशप्रकाराः)" इतिअस्य वाक्यस्य अर्थः प्रयोगेनregister_converter()
SQLite द्वारा मूलतः समर्थितं न कृतं दत्तांशप्रकारं Python प्रकारेषु अन्वेष्टुं परिवर्तयितुं च पञ्जीकृताः परिवर्तकाः । अतः, विषयाः ते विशिष्टाः दत्तांशप्रकाराः सन्ति येषां अन्वेषणं परिवर्तनं च आवश्यकम् ।
पृथक्करण_स्तर (स्त्र | न कश्चित् ) – विरासतां लेनदेननियन्त्रणव्यवहारं नियन्त्रयति। पश्यतुसंयोजन।पृथक्करण_स्तरतथाisolation_level विशेषतायाः माध्यमेन लेनदेननियन्त्रणम् अधिकविवरणार्थं। भवितुम् अर्हति"DEFERRED"
(मूलभूतम्),"EXCLUSIVE"
वा"IMMEDIATE"
; वाNone
अन्तर्निहितरूपेण व्यवहारान् उद्घाटयितुं निष्क्रियं कर्तुं। यावत् यावत् न प्रभावः भवतिसंयोजन।स्वयम्प्रतिबद्धताइति सेट् भवतिLEGACY_TRANSACTION_CONTROL(पूर्वनिर्धारितम्)।isolation_level
(स्ट्रिंग् | कोऽपि नास्ति) – विरासतव्यवहारप्रक्रियाव्यवहारं नियन्त्रयन्तु।अधिकविवरणार्थं पश्यन्तुConnection.isolation_level
तथा "उत्तीर्णम्" इतिisolation_level
सम्पत्तिनियन्त्रणव्यवहारः". भवितुम् अर्हति"DEFERRED"
(पूर्वनिर्धारित मूल्य), ."EXCLUSIVE"
वा"IMMEDIATE"
;अथवा सेट् भवतिNone
अन्तर्निहितरूपेण व्यवहारान् अन्तर्निहितरूपेण उद्घाटयितुं निष्क्रियं कर्तुं।न यावत्Connection.autocommit
यथा सेट् कुर्वन्तुLEGACY_TRANSACTION_CONTROL
(पूर्वनिर्धारितम्), अन्यथा अस्य सेटिङ्ग् इत्यस्य कोऽपि प्रभावः नास्ति ।
चेक_समे_धागा (bool) - यदिTrue
(मूलभूतम्),ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति उत्थापितं भविष्यति यदि दत्तांशकोशसंयोजनं तस्य निर्मितात् परेन सूत्रेण उपयुज्यते । यदिFalse
, संयोजनं बहुषु सूत्रेषु अभिगन्तुं शक्यते; write ऑपरेशन्स् उपयोक्त्रा क्रमाङ्कनं कर्तुं आवश्यकं भवेत् यत् दत्तांशभ्रष्टतां परिहरति । पश्यतुसूत्रसुरक्षाअधिकविवरणार्थं।check_same_thread
(बूलियन मूल्य) २. – यदि सेट् भवतिTrue
(पूर्वनिर्धारितम्), तदा उत्थापितं भविष्यति यदा दत्तांशकोशसंयोजनं तत् निर्मितं सूत्रं विहाय अन्येन सूत्रेण उपयुज्यते ।ProgrammingError
असामान्यम् ।यदि सेट् भवतिFalse
, बहुविधसूत्राणां संयोजनं प्राप्तुं अनुमतिः अस्ति परन्तु उपयोक्तृभ्यः दत्तांशभ्रष्टतां परिहरितुं स्वयं लेखनक्रियाः क्रमिकीकरणस्य आवश्यकता भवितुम् अर्हति;अधिकविवरणार्थं पश्यन्तुthreadsafety
निर्देशस्य ।
यन्त्रशाला (संबन्धः) – एकः रूढिगत उपवर्गःसंबन्धःसह संयोजनं निर्मातुं, यदि पूर्वनिर्धारितं नसंबन्धःश्रेणी।factory
(संयोजनम्) ९. – यदि पूर्वनिर्धारितं न उपयुज्यतेConnection
class, एकं कस्टम् निर्दिशन्तुConnection
संयोजनं निर्मातुं उपवर्गः । एषः पैरामीटर् भवन्तं विशिष्टापेक्षानुसारं विस्तारानुसारं वा दत्तांशकोशसंयोजनस्य व्यवहारं अनुकूलितुं शक्नोति ।
cached_statements इति (int) – कथनानां संख्या यत्...sqlite3
अस्य संयोजनस्य कृते आन्तरिकरूपेण संग्रहणीयम्, ओवरहेड् इत्यस्य विश्लेषणं परिहरितुं । पूर्वनिर्धारितरूपेण १२८ कथनानि ।cached_statements
(int) ९. – sqlite3
अस्य संयोजनस्य कृते आन्तरिकरूपेण संग्रहणीयानां कथनानां संख्या यत् ओवरहेड् पार्सिंग् न भवति । पूर्वनिर्धारितरूपेण १२८ कथनानि संग्रहीतानि सन्ति । एतत् पैरामीटर् भवन्तं कार्यक्षमतां वा स्मृतिप्रयोगं वा अनुकूलितुं cache आकारं समायोजयितुं शक्नोति ।
उरी (bool) – यदि सेट् भवतिTrue
, database सञ्चिकामार्गेण वैकल्पिकप्रश्नमालायुक्तेन च URI इति व्याख्यायते । योजना भागअवश्यम्भव"file:"
, मार्गः च सापेक्षः निरपेक्षः वा भवितुम् अर्हति । क्वेरी स्ट्रिंग् SQLite कृते पैरामीटर्स् पारयितुं अनुमतिं ददाति, विविधान् सक्षमं करोतिSQLite URIs इत्यनेन सह कथं कार्यं कर्तव्यम्.uri
(bool) ९. – यदि सेट् भवतिTrue
,किन्तुdatabase
सञ्चिकामार्गेण वैकल्पिकप्रश्नतारेन च सह एकरूपसंसाधनपरिचयः (URI) इति व्याख्यायते । यूआरआइ इत्यस्य योजनाभागःअवश्यम् "file:" अस्ति, मार्गः सापेक्षः निरपेक्षः वा भवितुम् अर्हति । क्वेरी स्ट्रिङ्ग्स् SQLite मध्ये पैरामीटर्स् पारयितुं अनुमतिं ददति, येन SQLite URIs इत्यनेन सह कार्यं कर्तुं विविधाः मार्गाः सक्षमाः भवन्ति । एतेन अधिकजटिलदत्तांशकोशसंयोजनविकल्पाः, यथा केवलं पठनीयविधानं सेट् करणं, कैश आकारं निर्दिष्टुं इत्यादयः ।
स्वप्रतिबद्धता (bool) - नियंत्रणंपीईपी २४९ व्यवहारनियन्त्रणव्यवहारः । पश्यतुसंयोजन।स्वयम्प्रतिबद्धतातथाautocommit विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्अधिकविवरणार्थं।स्वप्रतिबद्धतासम्प्रति पूर्वनिर्धारितं भवतिLEGACY_TRANSACTION_CONTROL . पूर्वनिर्धारितं परिवर्तनं भविष्यतिFalse
भविष्ये पायथन् विमोचने ।autocommit
(bool) ९. – PEP 249 इत्यस्य अनुपालनेन लेनदेनप्रक्रियाव्यवहारस्य नियन्त्रणं कुर्वन्तु।अधिकविवरणार्थं पश्यन्तुConnection.autocommit
तथा "autocommit विशेषतायाः माध्यमेन लेनदेनं नियन्त्रयति।" सम्प्रति, २.autocommit
पूर्वनिर्धारितं मूल्यं इति सेट् भवतिLEGACY_TRANSACTION_CONTROL
, यस्य अर्थः अस्ति यत् एतत् Python Database API विनिर्देशस्य (PEP 249) विरासतां लेनदेननियन्त्रणव्यवहारस्य अनुसरणं करोति ।तथापि पायथन् इत्यस्य भविष्ये संस्करणे पूर्वनिर्धारितं परिवर्तनं भविष्यतिFalse
, यस्य अर्थः अस्ति यत् व्यवहाराः स्वयमेव पूर्वनिर्धारितरूपेण न क्रियन्ते तथा च उपयोक्त्रेण व्यवहारस्य आरम्भं समाप्तिं च स्पष्टतया नियन्त्रयितुं आवश्यकम् ।
कृपया ज्ञातव्यं,
*
फंक्शन् परिभाषासु पैरामीटर् इत्यस्य उपयोगः स्थानिकस्य कीवर्डस्य च तर्कस्य मध्ये विभाजकरूपेण भवति, अर्थात्autocommit
तदनन्तरं सर्वे पैरामीटर् कीवर्ड पैरामीटर् भवितुमर्हन्ति ।
प्रत्यागमनप्रकारः : १.रिटर्न प्रकार:
उत्थापयति अण्लेखापरीक्षा घटना sqlite3.connect
तर्केन सहdatabase
.sqlite3.connect
: यदा प्रयोगः भवतिdatabase
दत्तांशकोशेन सह संयोजयन् क्षिप्ताः मापदण्डाः ।
उत्थापयति अण्लेखापरीक्षा घटना sqlite3.connect/handle
तर्केन सहconnection_handle
.sqlite3.connect/handle
: यदा संयोजनहन्डल (connection_handle
) सृष्टे क्षिप्यते ।
संस्करणे ३.४ परिवर्तितम्: योजितम्उरीपैरामीटर्।
संस्करणे ३.४: योजितम्uri
URI प्रारूपस्य उपयोगेन दत्तांशकोशसञ्चिकां निर्दिष्टुं अनुमतिं ददाति इति पैरामीटर् ।
3.7 संस्करणे परिवर्तितम्:databaseइदानीं अपि भवितुम् अर्हति कपथसदृशं वस्तु, न केवलं तारः ।
संस्करणे ३.७ : १.database
इदानीं पैरामीटर् केवलं स्ट्रिंग् इत्यस्य स्थाने मार्गसदृशं वस्तु भवितुम् अर्हति ।
संस्करणे ३.१० परिवर्तितम्: योजितम्sqlite3.connect/handle
लेखापरीक्षा घटना।
संस्करणे ३.१०: योजितम्sqlite3.connect/handle
Audit event, यत् संयोजनहन्डलस्य निर्माणे प्रवर्तते ।
संस्करणे 3.12 परिवर्तितम्: योजितम्स्वप्रतिबद्धतापैरामीटर्।
संस्करणे ३.१२: योजितम्autocommit
व्यवहारानां स्वतः-प्रतिबद्धव्यवहारस्य सूक्ष्मतरं नियन्त्रणं अनुमन्यन्ते ये मापदण्डाः ।
निर्वतनम्True
यदि तारःवक्तव्यम् एकं वा अधिकं वा सम्पूर्णं SQL स्टेट्मेण्ट् समाविष्टं दृश्यते । अनिमीलिताः स्ट्रिंग् लिटरेल् न सन्ति इति परीक्षणात् परं किमपि प्रकारस्य वाक्यविन्याससत्यापनं वा पार्सिंग् वा न क्रियते तथा च कथनं अर्धविरामेन समाप्तं भवति
यदि स्ट्रिंग्statement
एकं वा अधिकं वा सम्पूर्णं SQL स्टेट्मेण्ट् समाविष्टं दृश्यते, ततः प्रत्यागच्छतुTrue
. अनक्लोज्ड् स्ट्रिंग् लिटरेल् नास्ति इति परीक्षितुं विना अन्यत् कोऽपि वाक्यविन्याससत्यापनं वा पार्सिंग् वा न क्रियते तथा च स्टेट्मेण्ट् अर्धविरामेन समाप्तं भवति इति
उदाहरणतया:उदाहरण
>>>
- >>> sqlite3.complete_statement("SELECT foo FROM bar;")
- True
- >>> sqlite3.complete_statement("SELECT foo")
- False
इदं कार्यं आदेश-पङ्क्ति-निवेशस्य समये उपयोगी भवितुम् अर्हति यत् निर्धारयितुं यत् प्रविष्टः पाठः सम्पूर्णं SQL-कथनं निर्माति इव भासते, अथवा आह्वानात् पूर्वं अतिरिक्त-निवेशस्य आवश्यकता अस्ति वाप्रभज्().
आदेशपङ्क्तौ टङ्कयन्, प्रविष्टः पाठः सम्पूर्णः SQL स्टेट्मेण्ट् इव दृश्यते वा, आह्वानकाले वा इति निर्धारयितुं साहाय्यं कर्तुं, एतत् कार्यं उपयोगी भवितुम् अर्हतिexecute()
पूर्वं अतिरिक्तनिवेशस्य आवश्यकता अस्ति वा।
पश्यतुrunsource()
इत्यस्मिन्Lib/sqlite3/__मुख्य__.pyवास्तविक-जगत्-उपयोगाय ।
व्यावहारिकप्रयोगेषु भवन्तः सन्दर्भयितुं शक्नुवन्तिLib/sqlite3/__main__.py
मध्यंrunsource()
तस्य प्रयोगं अवगन्तुं कार्यम् ।
कॉलबैक् ट्रेसबैक् सक्षमं वा निष्क्रियं वा । पूर्वनिर्धारितरूपेण भवान् उपयोक्तृनिर्धारितकार्येषु, समुच्चयेषु, परिवर्तकेषु, प्राधिकरणकॉलबैकेषु इत्यादिषु किमपि ट्रेसबैक् न प्राप्स्यति यदि भवान् तान् त्रुटिनिवारणं कर्तुम् इच्छति तर्हि भवान् एतत् कार्यं आह्वयितुं शक्नोतिध्वजाइति सेट् कृतम्True
. तदनन्तरं भवन्तः callbacks on इत्यस्मात् tracebacks प्राप्नुवन्तिsys.stderr इति इति . उपयुञ्जताम्False
पुनः विशेषतां निष्क्रियं कर्तुं ।
कॉलबैक-निरीक्षणं सक्षमं वा अक्षमं वा । पूर्वनिर्धारितरूपेण, उपयोक्तृनिर्धारितकार्य्येषु, समुच्चयकार्येषु, परिवर्तकेषु, प्राधिकरणकॉलबैकेषु इत्यादिषु भवन्तः किमपि ट्रेसबैक् न प्राप्नुयुः ।यदि भवान् तान् त्रुटिनिवारणं कर्तुम् इच्छति तर्हि एतत् कार्यं आह्वयित्वा प्रतिस्थापनं कर्तुं शक्नोतिflag
यथा सेट् कुर्वन्तुTrue
.तदनन्तरं भवन्तः समर्थाः भविष्यन्तिsys.stderr
कॉलबैक् तः ट्रेस सूचनां प्राप्नुवन्तु।उपयुञ्जताम्False
पुनः एतत् विशेषतां निष्क्रियं कर्तुं ।
टीका
उपयोक्तृ-निर्धारित-कार्य-कॉलबैक्-मध्ये त्रुटयः अप्रवर्तनीय-अपवादरूपेण लॉग् भवन्ति । प्रयोग अण्अउत्थापनीय हुक संचालकअसफलस्य आह्वानस्य अन्तःनिरीक्षणार्थम् ।
उपयोक्तृ-निर्धारित-कार्य-कॉलबैक्-मध्ये त्रुटयः अग्रहणीय-अपवादरूपेण लॉग् भवन्ति । असफल-कॉलबैक्-सम्बद्धेषु आत्मनिरीक्षणं कर्तुं अउत्थापनीय-हुक्-हन्डलरस्य उपयोगं कुर्वन्तु ।
अस्य अर्थः अस्ति यत् यदा SQLite इत्यस्य उपयोक्तृ-निर्धारित-कार्यस्य (यथा समुच्चय-कार्यं, स्केलर-कार्यम् इत्यादीनां) कॉलबैक्-मध्ये त्रुटयः भवन्ति तदा एताः त्रुटयः सामान्य-पायथन्-अपवादवत् न क्षिप्यन्ते, ते च try-except-ब्लॉक्-द्वारा गृहीतुं शक्यन्ते तस्य स्थाने, ते SQLite अथवा Python इत्यस्य sqlite3 मॉड्यूलेन गृहीताः भवन्ति तथा च केनचित् प्रकारेण लॉग् भवन्ति (प्रायः log अथवा standard error output इत्यत्र लिखिताः), परन्तु प्रोग्रामस्य निष्पादनं न बाधन्ते (यावत् त्रुटिः अतीव गम्भीरः न भवति)
एतेषां अग्रहणीयानाम् अपवादानाम् निरीक्षणाय, त्रुटिनिवारणाय च, भवान् "अग्रहणीय-हुक्-सञ्चालकं" स्थापयितुं शक्नोति । इदं हन्डलर् एकं फंक्शन् अस्ति यत् पायथन् आह्वयति यदा अनकक्ट् अपवादः भवति, अपवादसूचनाः पैरामीटर् रूपेण पारयति । एवं प्रकारेण, समस्यायाः निदानं कर्तुं साहाय्यं कर्तुं एतेषां अपवादानाम् लॉग् कर्तुं वा परीक्षितुं वा प्रोसेसर फंक्शन् मध्ये कोड् लिखितुं शक्नुवन्ति ।
कृपया ज्ञातव्यं यत् विशिष्टं कार्यान्वयनम् Python इत्यस्य संस्करणस्य sqlite3 मॉड्यूलस्य कार्यान्वयनविवरणस्य च आधारेण भिन्नं भवितुम् अर्हति । अतः, अग्रहणीयं हुक-हन्डलरं कथं स्थापयितव्यं, कथं च उपयोक्तुं शक्यते इति ज्ञातुं नवीनतम-पायथन्-दस्तावेजस्य अथवा sqlite3-मॉड्यूल्-दस्तावेजस्य परामर्शं कर्तुं अनुशंसितम्
पञ्जीकरणं कुर्वन्तु अएडाप्टर आह्वानीयम्पायथन् प्रकारं अनुकूलितुंप्रकारः एकस्मिन् SQLite प्रकारे । एडाप्टर् प्रकारस्य पायथन् ऑब्जेक्ट् इत्यनेन सह आह्वयतेप्रकारःतस्य एकमात्रं तर्करूपेण, a इत्यस्य मूल्यं च प्रत्यागन्तुं भवतिटङ्कयन्तु यत् SQLite मूलतः अवगच्छति.
Python's परिवर्तनार्थं **adapter** आह्वानीयं वस्तु पञ्जीकरणं कुर्वन्तुtype
प्रकारः एकस्य प्रकारस्य अनुकूलः भवति यत् SQLite मूलतः अवगन्तुं शक्नोति ।एतत् एडाप्टर-कार्यं a गृह्णातिtype
प्रकारस्य वस्तु एकमात्रं तर्करूपेण आह्वयते तथा च SQLite मूलतः समर्थितं प्रकारस्य मूल्यं प्रत्यागन्तुं भवति ।
ज्ञातव्यं यत् "
type
type" किञ्चित् भ्रामकं भवितुम् अर्हति, यतः सामान्यतया वयं Python इत्यस्य अन्तःनिर्मितं न सन्दर्भयामःtype
वस्तुनि (अर्थात् प्रकाराः एव) प्रत्यक्षतया दत्तांशकोशे संगृह्यन्ते । अधिकतया, वयं Python इत्यस्मिन् वस्तुनः (यत् कस्टम् प्रकारस्य उदाहरणं भवितुम् अर्हति) एकस्मिन् प्रारूपे अनुकूलितुं इच्छामः यत् SQLite संग्रहीतुं शक्नोति ।तथापि वाक्यं अक्षरशः गृहीत्वा, यदि भवतः व्यवहारस्य आवश्यकता अस्तिtype
object स्वयं (यद्यपि व्यवहारे एतत् दुर्लभम् अस्ति), भवद्भिः एडाप्टरं लिखितव्यं यत् एतत् कस्मिंश्चित् रूपे परिवर्तयितुं यत् SQLite संग्रहीतुं शक्नोति, यथा प्रकारस्य नाम प्रतिनिधियति स्ट्रिंग्
तथापि अधिकसामान्यः उपयोगप्रकरणः कस्टम् पायथन् प्रकारस्य अथवा अन्तर्निर्मितप्रकारस्य यथा
datetime
、decimal.Decimal
इत्यादि) एडाप्टर् लिखन्ति येन ते SQLite-दत्तांशकोशेन सम्यक् संग्रहीतुं पुनः प्राप्तुं च शक्यन्ते ।यथा, यदि भवतां कृते कस्टम् पायथन् क्लास् अस्ति
MyClass
, तथा च तस्य उदाहरणं SQLite आँकडाकोषे संग्रहीतुं इच्छति, भवान् अस्य वर्गस्य एकं उदाहरणं स्ट्रिंग् (अथवा अन्यप्रकारस्य) परिवर्तनार्थं एडाप्टरं लिखितुं शक्नोति यत् SQLite द्वारा संग्रहीतुं शक्यते, ततः परिवर्तयितुं परिवर्तकं लिखितुं शक्नोति Convert this string back इत्यस्मैMyClass
क्षण।तथापि अस्य प्रश्नस्य कृते यदि भवान् केवलं पायथन् इत्यनेन सह व्यवहारं कर्तुम् इच्छति
type
object (अर्थात् प्रकारस्य मेटाडाटा), भवान् प्रकारस्य नाम (स्ट्रिंग् रूपेण) प्रत्यागन्तुं एडाप्टरं लिखितुं शक्नोति, परन्तु सामान्यतया एतत् दत्तांशकोशे वस्तुनां संग्रहणार्थं सामान्या अभ्यासः नास्ति
पञ्जीकरणं कुर्वन्तुपरिवर्तक आह्वानीयम्प्रकारस्य SQLite ऑब्जेक्ट्स् परिवर्तयितुंप्रकारनाम विशिष्टप्रकारस्य पायथन् ऑब्जेक्ट् मध्ये । प्रकारस्य सर्वेषां SQLite मूल्यानां कृते परिवर्तकः आह्वयतेप्रकारनाम ; पारित इति कबाइट् object and इष्टस्य Python प्रकारस्य object प्रत्यागन्तुं अर्हति । पैरामीटर् परामर्शं कुर्वन्तुdetect_types इति इति इति इति इति इति इति इति इतिइत्यस्यसंयुज्()प्रकारपरिचयः कथं कार्यं करोति इति विषये सूचनायै।
SQLite प्रकारान् परिवर्तयितुं **converter** आह्वानीयं वस्तु पञ्जीकरणं कुर्वन्तुtypename
एकं वस्तु विशिष्टप्रकारस्य Python वस्तुरूपेण परिवर्तयति ।सर्वेषां प्रकाराणां कृतेtypename
इदं परिवर्तकं कस्यापि SQLite मूल्यस्य कृते आह्वयति;bytes
object इत्यस्य argument इत्यस्य रूपेण अपेक्षितस्य Python प्रकारस्य object इत्यस्य प्रत्यागमनं कर्तव्यम् ।प्रकारपरिचयः कथं कार्यं करोति इति ज्ञातुं कृपया पश्यन्तुconnect()
कार्यात्मकdetect_types
पैरामीटर्।
टीका:प्रकारनामतथा भवतः प्रश्ने प्रकारस्य नाम केस-असंवेदनशीलरूपेण मेलनं भवति ।
सूचना:typename
प्रश्ने प्रकारस्य नाम मेलने केस-संवेदनशीलं न भवति ।
दृढःस्वप्रतिबद्धता पुरातनशैली (पूर्व-पायथन् ३.१२) लेनदेननियन्त्रणव्यवहारं चयनं कर्तुं अस्य नित्यं प्रति । पश्यतुisolation_level विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्अधिकविवरणार्थं।
भविष्यतिautocommit
पुरातनशैल्याः (पूर्व-पायथन् ३.१२) लेनदेननियन्त्रणव्यवहारं चिन्वितुं अस्मिन् नित्यं सेट् कुर्वन्तु ।अधिकविवरणार्थं "उत्तीर्णम्" इति पश्यन्तुisolation_level
गुणाः लेनदेनं नियन्त्रयन्ति"।
एतत् ध्वजमूल्यंdetect_types इति इति इति इति इति इति इति इति इतिपैरामीटर् ofसंयुज्() प्रश्नस्तम्भनामतः विश्लेषितं प्रकारनामस्य उपयोगेन परिवर्तककोशकुंजीरूपेण परिवर्तककार्यं अन्वेष्टुं । प्रकारनाम वर्गकोष्ठकेषु ([]
).
इदं ध्वजमूल्यंconnect()
कार्यात्मकdetect_types
परिवर्तककोशस्य कुञ्जीरूपेण स्तम्भनाम्नि समाधानकृतप्रकारनाम प्रश्नं कृत्वा परिवर्तककार्यं अन्वेष्टुं पैरामीटर् । प्रकारनामानि वर्गकोष्ठकेषु ([]) अवश्यमेव संलग्नाः भवेयुः ।
SELECT p as "p [point]" FROM test; ! will look up converter "point"
अयं ध्वजः सह संयोजितः भवेत्PARSE_DECLTYPES इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थःusing the|
(बिटवाइज वा) संचालकः ।
एतस्य ध्वजस्य उपयोगः कर्तुं शक्यते|
(बिटवाइज OR) ऑपरेटर ANDPARSE_DECLTYPES
संयोगे ।
एतत् ध्वजमूल्यंdetect_types इति इति इति इति इति इति इति इति इतिपैरामीटर् ofसंयुज्() प्रत्येकस्य स्तम्भस्य कृते घोषितप्रकारस्य उपयोगेन परिवर्तककार्यं द्रष्टुं । यदा दत्तांशकोशसारणी निर्मीयते तदा प्रकाराः घोषिताः भवन्ति ।sqlite3
घोषितप्रकारस्य प्रथमं शब्दं परिवर्तककोशकुंजीरूपेण उपयुज्य परिवर्तककार्यं पश्यति । उदाहरणतया:
इदं ध्वजमूल्यंconnect()
कार्यात्मकdetect_types
दत्तांशकोशे प्रत्येकस्य स्तम्भस्य घोषितप्रकारस्य उपयोगेन परिवर्तककार्यं अन्वेष्टुं पैरामीटर् । एते प्रकाराः database table इत्यस्य निर्माणकाले घोषिताः भवन्ति ।sqlite3
परिवर्तक-कार्यं परिवर्तक-शब्दस्य कुञ्जीरूपेण घोषित-प्रकारे प्रथम-शब्दस्य उपयोगेन अवलोकितं भविष्यति । उदाहरणतया:
- CREATE TABLE test(
- i integer primary key, ! will look up a converter named "integer"
- p point, ! will look up a converter named "point"
- n number(10) ! will look up a converter named "number"
- )
अयं ध्वजः सह संयोजितः भवेत्PARSE_COLNAMES इति इति इति इति इति इतिusing the|
(बिटवाइज वा) संचालकः ।
ध्वजाः ये प्रत्यागन्तुं अर्हन्तिअधिकृतकर्ता_कॉलबैक आह्वानीयम्पारितः इतिConnection.set_authorizer () 1.1., इति सूचयितुं यत् : १.
पास तोConnection.set_authorizer()
इत्यस्यauthorizer_callback
ध्वजाः यत् आह्वानीयं कार्यं सूचयितुं प्रत्यागन्तुं अर्हति:
प्रवेशः अनुमतः अस्ति (SQLITE_OK
), प्रवेशः अनुमतः (SQLITE_OK
)
SQL स्टेट्मेण्ट् त्रुटिना सह निरस्तं कर्तव्यम् (SQLITE_DENY
)
SQL स्टेट्मेण्ट् त्रुटिना सह निरस्तं कर्तव्यम् (SQLITE_DENY
)
स्तम्भं यथा कNULL
मूल्यम् (SQLITE_IGNORE
)
स्तम्भान् NULL मूल्यानि इति व्यवहरितव्यम् (SQLITE_IGNORE
)
समर्थितं DB-API स्तरं वदन् स्ट्रिंग् नित्यं । DB-API द्वारा आवश्यकम्। हार्ड-कोडेड् to"2.0"
.
एतौ तारनित्यौ स्तःsqlite3
मॉड्यूलेषु परिभाषिताः ते Python Database API विनिर्देशस्य (DB-API) अनुसरणं कुर्वन्ति ।
द्वारा अपेक्षितस्य पैरामीटर् मार्कर स्वरूपणस्य प्रकारं वदन् String constantsqlite3
मॉड्यूल। DB-API द्वारा आवश्यकम्। हार्ड-कोडेड् to"qmark"
.
इदं स्ट्रिंग् नित्यं निर्दिशतिsqlite3
मॉड्यूलेन अपेक्षितस्य पैरामीटर् मार्कर स्वरूपणस्य प्रकारः । एतत् DB-API (Database Application Programming Interface) विनिर्देशेन आवश्यकम् अस्ति ।इदं हार्डकोडेड् अस्ति यथा"qmark"
, इत्यस्य अर्थः अस्ति यत् SQL-प्रश्नानां निर्माणकाले पैरामीटर्-चिह्नानां प्रतिनिधित्वं प्रश्नचिह्नैः (?) करणीयम् ।
टीका
दnamed
DB-API पैरामीटर् शैली अपि समर्थिता अस्ति ।
रनटाइम् SQLite पुस्तकालयस्य संस्करणसङ्ख्या aसूत्र.
SQLite रनटाइम् पुस्तकालयस्य संस्करणसङ्ख्या, स्ट्रिंग् रूपेण व्यक्ता ।
रनटाइम् SQLite पुस्तकालयस्य संस्करणसङ्ख्या aतुपलेइत्यस्यपूर्णाङ्काः.
SQLite रनटाइम् पुस्तकालयस्य संस्करणसङ्ख्या, पूर्णाङ्कानां ट्युपलरूपेण व्यक्ता ।
DB-API 2.0 द्वारा आवश्यकं पूर्णाङ्कनित्यं, सूत्रसुरक्षायाः स्तरं कथयति thesqlite3
मॉड्यूल समर्थयति। एतत् विशेषता पूर्वनिर्धारितस्य आधारेण सेट् भवतिथ्रेडिंग मोड् अन्तर्निहितं SQLite पुस्तकालयं सह संकलितं भवति । SQLite थ्रेडिंग् मोड्स् सन्ति :
DB-API 2.0 द्वारा आवश्यकं पूर्णाङ्कनित्यं, सूचयतिsqlite3
मॉड्यूलेन समर्थितः सूत्रसुरक्षास्तरः । इदं गुणं पूर्वनिर्धारितथ्रेडिंग् मोड् इत्यस्य अनुसारं सेट् भवति यस्य सह अन्तर्निहितः SQLite पुस्तकालयः संकलितः आसीत् । SQLite इत्यस्य थ्रेडिंग् मोड् मध्ये अन्तर्भवन्ति :
एकसूत्रम्: अस्मिन् मोड् मध्ये सर्वाणि म्यूटेक्स् अक्षमानि सन्ति तथा च SQLite एकदा एव एकादशाधिक थ्रेड् मध्ये उपयोगाय असुरक्षितम् अस्ति ।
Single-thread: अस्मिन् मोड् मध्ये सर्वे mutexes अक्षमाः भवन्ति तथा च SQLite एकस्मिन् समये बहुभिः threads द्वारा उपयोक्तुं सुरक्षितं नास्ति ।
बहुसूत्रम्: अस्मिन् मोड् मध्ये SQLite इत्यस्य उपयोगः बहुभिः थ्रेड्-द्वारा सुरक्षितरूपेण कर्तुं शक्यते बशर्ते यत् द्वयोः वा अधिकयोः थ्रेड्-मध्ये एकत्रैव कोऽपि एकः डाटाबेस्-संयोजनः न उपयुज्यते ।
बहु-सूत्रम् : अस्मिन् मोड् मध्ये SQLite इत्यस्य उपयोगः बहुभिः थ्रेड्-द्वारा सुरक्षितरूपेण कर्तुं शक्यते, बशर्ते यत् द्वयोः वा अधिकयोः थ्रेड्-द्वारा एकत्रैव कोऽपि एकः आँकडाधार-संयोजनः न उपयुज्यते ।
क्रमबद्ध: क्रमाङ्कितविधाने SQLite इत्यस्य उपयोगः बहुभिः थ्रेड्-द्वारा सुरक्षितरूपेण कर्तुं शक्यते यत्र कोऽपि प्रतिबन्धः नास्ति ।
क्रमबद्धः : क्रमबद्धविधौ SQLite इत्यस्य उपयोगः बहुभिः थ्रेड्-द्वारा सुरक्षितरूपेण विना किमपि प्रतिबन्धं कर्तुं शक्यते ।
SQLite थ्रेडिंग् मोड् तः DB-API 2.0 थ्रेड्सेफ्टी स्तरं यावत् मैपिङ्ग्स् निम्नलिखितरूपेण सन्ति ।
SQLite इत्यस्य थ्रेड् मोड् इत्यस्य DB-API 2.0 थ्रेड् सुरक्षास्तरं प्रति मैपिंगं निम्नलिखितम् अस्ति ।
SQLite थ्रेडिंग मोड | DB-API 2.0 अर्थ | ||
---|---|---|---|
एकसूत्रम् | 0 | 0 | थ्रेड्स् मॉड्यूल् साझां न कर्तुं शक्नुवन्ति |
बहुसूत्रम् | 1 | 2 | थ्रेड्स् मॉड्यूल् साझां कर्तुं शक्नुवन्ति, परन्तु संयोजनानि न |
क्रमबद्धः | 3 | 1 | थ्रेड्स् मॉड्यूल्, कनेक्शन्स्, कर्सर्स् च साझां कर्तुं शक्नुवन्ति |
संस्करणे 3.11 परिवर्तितम्: सेट्सूत्रसुरक्षागतिशीलरूपेण तस्य हार्ड-कोडिंग् इत्यस्य स्थाने1
.
अस्य मॉड्यूलस्य संस्करणसङ्ख्या यथा aसूत्र . एतत् SQLite पुस्तकालयस्य संस्करणं नास्ति ।
अस्य मॉड्यूलस्य संस्करणसङ्ख्या, स्ट्रिंग् इत्यनेन व्यक्ता ।अयम्नहिSQLite पुस्तकालयस्य संस्करणसङ्ख्या ।
संस्करण 3.12 तः अप्रचलितं, संस्करण 3.14 मध्ये निष्कासितम् भविष्यति: एतत् नित्यं संस्करणसङ्ख्यां प्रतिबिम्बयितुं प्रयुक्तम्pysqlite
package, तृतीयपक्षस्य पुस्तकालयः यः पूर्वं परिवर्तनं अपस्ट्रीम करोति स्मsqlite3
. अद्यत्वे तस्य न कोऽपि अर्थः व्यावहारिकं मूल्यं वा न वहति ।
संस्करण 3.12 तः अप्रचलितम्, संस्करण 3.14 मध्ये निष्कासितव्यम्: एतत् नित्यं प्रतिबिम्बयितुं प्रयुक्तम्pysqlite
संकुलस्य संस्करणसङ्ख्या, .pysqlite
इदं तृतीयपक्षस्य पुस्तकालयः अस्ति यत् अपस्ट्रीम इत्यत्र अपलोड् कृतम् अस्तिsqlite3
परिवर्तनं प्रतिबद्धं कुर्वन्तु। अधुना, तस्य वास्तविकः अर्थः वा व्यावहारिकं मूल्यं वा नास्ति ।
अस्य मॉड्यूलस्य संस्करणसङ्ख्या यथा aतुपलेइत्यस्यपूर्णाङ्काः . एतत् SQLite पुस्तकालयस्य संस्करणं नास्ति ।
संस्करण 3.12 तः अप्रचलितं, संस्करण 3.14 मध्ये निष्कासितम् भविष्यति: एतत् नित्यं संस्करणसङ्ख्यां प्रतिबिम्बयितुं प्रयुक्तम्pysqlite
package, तृतीयपक्षस्य पुस्तकालयः यः पूर्वं परिवर्तनं अपस्ट्रीम करोति स्मsqlite3
. अद्यत्वे तस्य न कोऽपि अर्थः व्यावहारिकं मूल्यं वा न वहति ।
एते नित्याः प्रयुज्यन्तेकनेक्शन.setconfig () 1.1.तथाgetconfig () ९.विधयः ।
एते नित्याः प्रयुज्यन्तेConnection.setconfig()
तथाgetconfig()
प्रक्रिया।
एतेषां स्थिरांकानाम् उपलब्धता SQLite Python इत्यस्य संस्करणस्य आधारेण भिन्ना भवति यस्य सह संकलनं कृतम् आसीत् ।
एतेषां स्थिरांकानाम् उपलब्धता SQLite संस्करणस्य उपरि निर्भरं भवति यस्य सह SQLite Python संकलनं कृतम् आसीत् ।
संस्करणे ३.१२ योजितम् ।
अपि द्रष्टव्यम्
दत्तांशकोशसंयोजनविन्यासविकल्पाः
SQLite docs: डाटाबेस् संयोजनविन्यासविकल्पाः
प्रत्येकं मुक्तं SQLite दत्तांशकोशं कConnection
object, यत् उपयोगेन निर्मितं भवतिsqlite3.connect () 1.1. . तेषां मुख्यं प्रयोजनं सृष्टिः एवकर्सरविषयाः, तथाव्यवहारनियन्त्रणम्.
अपि द्रष्टव्यम्
SQLite दत्तांशकोशसंयोजनस्य निम्नलिखितगुणाः पद्धतयः च सन्ति ।
रचयित्वा प्रत्यागन्तुं ककर्सर वस्तु। कर्सर-विधिः एकं वैकल्पिकं पैरामीटर् स्वीकुर्वतियन्त्रशाला . यदि आपूर्तिः क्रियते तर्हि एतत् अवश्यमेव कआह्वानीयम्इत्यस्य उदाहरणं प्रत्यागत्यकर्सरतस्य उपवर्गाः वा ।
a रचयति a च प्रत्यागच्छतिCursor
वस्तु।cursor
विधिः वैकल्पिकं एकं पैरामीटर् स्वीकुर्वतिfactory
.यदि एषः पैरामीटर् प्रदत्तः अस्ति तर्हि एतत् एकं आह्वानीयं वस्तु भवितुमर्हति यत् a प्रत्यागच्छतिCursor
तस्य उपवर्गस्य उदाहरणं वा ।
उद्घाट्य कब्लोबविद्यमानस्य BLOB कृते handle ।
मापदण्डः : १.
पीठिका (स्त्र) – यत्र ब्लोब् स्थितः तस्य सारणीयाः नाम ।
BLOB data युक्तस्य सारणीयाः नाम ।
स्तम्भ: (स्त्र) – यत्र ब्लोब् स्थितः तस्य स्तम्भस्य नाम ।
BLOB दत्तांशं युक्तं स्तम्भनाम ।
पंक्ति (स्त्र) – यत्र ब्लोब् स्थितः तस्य पङ्क्तिः नाम ।
BLOB-दत्तांशं यस्मिन् पङ्क्तिः (अथवा अधिकसटीकतया पङ्क्तिपरिचयः) तस्य नाम ।
पठनीय एव (bool) – इति सेट् कुर्वन्तुTrue
यदि लेखनस्य अनुमतिं विना ब्लोब् उद्घाटनीयः। पूर्वनिर्धारितं भवतिFalse
.
यदि True इति सेट् भवति तर्हि लेखन-अनुमतिं विना BLOB उद्घाटनीयम् इति सूचयति । पूर्वनिर्धारितं False अस्ति, यत् पठनं लेखनं च अनुमन्यते ।
नामः (स्त्र ) – यत्र ब्लोब् स्थितः तस्य दत्तांशकोशस्य नाम । पूर्वनिर्धारितं भवति"main"
.
BLOB दत्तांशयुक्तस्य दत्तांशकोशस्य नाम । पूर्वनिर्धारितं "main" अस्ति, यत् SQLite मध्ये पूर्वनिर्धारितं दत्तांशकोशनाम अस्ति ।
उत्थापयति : १.
OperationalError इति इति इति इति इति इति इति इति इति इति– यदा क.मध्ये ब्लोब् उद्घाटयितुं प्रयततेWITHOUT ROWID
पीठिका।
विना प्रयासं कुर्वन्पंक्तियदा ID इत्यस्य सारणीयां BLOB दत्तांशः उद्घाटितः भवति तदा भवति ।
प्रत्यागमनप्रकारः : १.
टीका
इत्यस्य उपयोगेन ब्लोब् आकारं परिवर्तयितुं न शक्यतेब्लोब श्रेणी। SQL फंक्शन् इत्यस्य उपयोगं कुर्वन्तु
zeroblob
नियतप्रमाणेन सह ब्लोब् निर्मातुं ।
संस्करणे ३.११ योजितम् ।
यत्किमपि लम्बितव्यवहारं दत्तांशकोशे प्रतिबद्धं कुर्वन्तु। यदिस्वप्रतिबद्धताअस्तिTrue
, अथवा मुक्तव्यापारः नास्ति, अयं विधिः किमपि न करोति। यदिautocommit
अस्तिFalse
, यदि एतेन पद्धत्या लम्बितव्यवहारः कृतः आसीत् तर्हि नूतनः व्यवहारः अन्तर्निहितरूपेण उद्घाटितः भवति ।
यत्किमपि लम्बितव्यवहारं दत्तांशकोशे प्रतिबद्धं कुर्वन्तु।यदिautocommit
सत्यम् अस्ति, अथवा मुक्तव्यापारः नास्ति, एषः विधिः किमपि कार्यं न करोति ।यदिautocommit
is False, तथा च एषा पद्धतिः लम्बितव्यवहारं करोति, नूतनः व्यवहारः अन्तर्निहितरूपेण आरभ्यते ।
कस्यापि लम्बितव्यवहारस्य आरम्भं प्रति पुनः रोल कुर्वन्तु। यदिस्वप्रतिबद्धताअस्तिTrue
, अथवा मुक्तव्यापारः नास्ति, अयं विधिः किमपि न करोति। यदिautocommit
अस्तिFalse
, नूतनः व्यवहारः अन्तर्निहितरूपेण उद्घाटितः भवति यदि लम्बितव्यवहारः एतेन पद्धत्या पुनः रोल कृतः आसीत् ।
कस्यापि लम्बितव्यवहारस्य आरम्भं प्रति पुनः रोल कुर्वन्तु।यदिautocommit
सत्यम् अस्ति, अथवा मुक्तव्यापारः नास्ति, एषः विधिः किमपि कार्यं न करोति ।यदिautocommit
is False, तथा च एषा पद्धतिः लम्बितव्यवहारं पुनः रोल करोति, नूतनः व्यवहारः अन्तर्निहितरूपेण आरभ्यते ।
दत्तांशकोशसंयोजनं बन्दं कुर्वन्तु। यदिस्वप्रतिबद्धताअस्तिFalse
, कोऽपि लम्बितः व्यवहारः अन्तर्निहितरूपेण पुनः रोल भवति । यदिautocommit
अस्तिTrue
वाLEGACY_TRANSACTION_CONTROL , कोऽपि अन्तर्निहितव्यवहारनियन्त्रणं न निष्पादितं भवति । अवश्यं कुरुतप्रविश्()लम्बितपरिवर्तनानां हानिः न भवेत् इति बन्दीकरणात् पूर्वं।
दत्तांशकोशसंयोजनं बन्दं कुर्वन्तु।यदिautocommit
यदि False अस्ति तर्हि कोऽपि लम्बितव्यवहारः अन्तर्निहितरूपेण पुनः रोल भविष्यति ।यदिautocommit
इति सत्यम् वाLEGACY_TRANSACTION_CONTROL
(legacy transaction control), अन्तर्निहितव्यवहारनियन्त्रणं न क्रियते ।बन्दीकरणात् पूर्वं आह्वानं सुनिश्चितं कुर्वन्तुcommit()
लम्बितपरिवर्तनानां हानिः न भवेत् इति।
एकं नूतनं रचयतुकर्सरआक्षेपं आह्वयति चप्रभज्()तस्मिन् दत्तेन सहsqlतथापैरामीटर्स् . नूतनं कर्सर-वस्तुं प्रत्यागच्छतु ।
नूतनं सृजतुCursor
आक्षेपं आह्वयति चexecute()
विधिः, दत्ते पारयन्sql
कथनानि मापदण्डानि च।इदं नूतनं प्रत्यागच्छतुCursor
वस्तु।
एकं नूतनं रचयतुकर्सरआक्षेपं आह्वयति चexecute many() ९.तस्मिन् दत्तेन सहsqlतथापैरामीटर्स् . नूतनं कर्सर-वस्तुं प्रत्यागच्छतु ।
नूतनं सृजतुCursor
आक्षेपं आह्वयति चexecutemany()
विधिः, दत्ते पारयन्sql
कथनानि तथा पैरामीटर् क्रमाः। एतेन एकदा एव बहुविधाः पैरामीटर् सेट् निष्पादयितुं शक्यन्ते ।इदं नूतनं प्रत्यागच्छतुCursor
वस्तु।
एकं नूतनं रचयतुकर्सरआक्षेपं आह्वयति चनिष्पादनस्क्रिप्ट्() २.तस्मिन् दत्तेन सहsql_स्क्रिप्ट् . नूतनं कर्सर-वस्तुं प्रत्यागच्छतु ।
नूतनं सृजतुCursor
आक्षेपं आह्वयति चexecutescript()
विधिः, दत्ते SQL स्क्रिप्ट् मध्ये पारयन् । एतेन स्क्रिप्ट् मध्ये अर्धविरामैः पृथक्कृतानां बहुविधस्य SQL स्टेट्मेण्ट्-निष्पादनस्य अनुमतिः भवति ।इदं नूतनं प्रत्यागच्छतुCursor
वस्तु।
उपयोक्तृ-निर्धारितं SQL-कार्यं रचयन्तु अथवा निष्कासयन्तु ।
उपयोक्तृ-निर्धारितं SQL-कार्यं रचयन्तु अथवा निष्कासयन्तु ।
मापदण्डः : १.
नामः (स्त्र) – SQL फंक्शन् इत्यस्य नाम ।name
(str) – SQL फंक्शन् इत्यस्य नाम ।
नर्ग (int ) – SQL फंक्शन् यत् आर्गुमेण्ट् स्वीकुर्वितुं शक्नोति तस्य संख्या । यदि-1
, यत्किमपि संख्यायां तर्कं गृह्णीयात् ।narg
(int) – SQL फंक्शन् यत् आर्गुमेण्ट् स्वीकुर्वितुं शक्नोति तस्य संख्या । यदि -1 तर्हि यत्किमपि संख्यायां तर्कं स्वीकुर्वितुं शक्नोति इति अर्थः ।
func (callback | न कश्चित्) – कआह्वानीयम् यत् SQL फंक्शन् आह्वानसमये आह्वयते । आह्वानीयः अवश्यमेव प्रत्यागच्छतिSQLite द्वारा मूलतः समर्थितः प्रकारः . इति सेट् कुर्वन्तुNone
विद्यमानं SQL फंक्शन् निष्कासयितुं ।func
(callback | None) – SQL फंक्शन् आह्वये सति एतत् कॉलेबल ऑब्जेक्ट् (callback) निष्पादितं भविष्यति । एतत् आह्वानीयं वस्तु एकं प्रकारं प्रत्यागन्तुं यत् SQLite मूलतः समर्थयति । यदि None इति सेट् भवति तर्हि विद्यमानाः SQL कार्याणि निष्कासितानि भवन्ति ।
नियतात्मकः (bool) - यदिTrue
, निर्मितं SQL फंक्शन् इति चिह्नितम् अस्तिनियतात्मकः, यत् SQLite अतिरिक्त अनुकूलनं कर्तुं शक्नोति ।deterministic
(bool) – यदि True तर्हि निर्मितं SQL फंक्शन् नियतात्मकरूपेण चिह्नयति, यत् SQLite अतिरिक्त अनुकूलनं कर्तुं सक्षमं करोति ।
उत्थापयति : १.
समर्थितदोषः नास्ति- यदिनियतात्मकः3.8.3 इत्यस्मात् प्राचीनैः SQLite संस्करणैः सह उपयुज्यते ।
संस्करणे ३.८ परिवर्तितम्: योजितम्नियतात्मकःपैरामीटर्।
उदाहरण:
>>>
- >>> import hashlib
- >>> def md5sum(t):
- ... return hashlib.md5(t).hexdigest()
- >>> con = sqlite3.connect(":memory:")
- >>> con.create_function("md5", 1, md5sum)
- >>> for row in con.execute("SELECT md5(?)", (b"foo",)):
- ... print(row)
- ('acbd18db4cc2f85cedef654fccc4a4d8',)
- >>> con.close()
उपयोक्तृनिर्धारितं SQL समुच्चयकार्यं रचयन्तु अथवा निष्कासयन्तु ।
उपयोक्तृनिर्धारितं SQL समुच्चयकार्यं रचयन्तु अथवा निष्कासयन्तु ।
मापदण्डः : १.
नामः (स्त्र) – SQL समुच्चयकार्यस्य नाम ।
name
(str) – SQL समुच्चयकार्यस्य नाम ।
न_अर्ग् (int ) – SQL समुच्चयकार्यं यत् तर्कं स्वीकुर्वितुं शक्नोति तस्य संख्या । यदि-1
, यत्किमपि संख्यायां तर्कं गृह्णीयात् ।
SQL समुच्चयकार्यं यत् परिमाणं स्वीकुर्वितुं शक्नोति तस्य संख्या । यदि -1 तर्हि यत्किमपि संख्यायां तर्कं स्वीकुर्वितुं शक्नोति इति अर्थः ।
समुच्चय_वर्गः (श्रेणी | न कश्चित्) -
कस्यचित् वर्गस्य निम्नलिखितविधयः कार्यान्विताः भवेयुः ।
कस्यचित् वर्गस्य निम्नलिखितविधयः कार्यान्विताः भवेयुः ।
step()
: समुच्चये पङ्क्तिं योजयन्तु।
finalize()
: समुच्चयस्य अन्तिमपरिणामं यथा प्रत्यागच्छतुSQLite द्वारा मूलतः समर्थितः प्रकारः.finalize()
: समुच्चयस्य अन्तिमफलं प्रत्यागन्तुं एषा पद्धतिः उपयुज्यते ।
तर्कानाम् संख्या यत् दstep()
विधिः अवश्यं स्वीकुर्यात् इति नियन्त्रितम् अस्तिन_अर्ग्.step()
विधिना यत् परिमाणं स्वीकुर्यात् तत् संख्यां दत्तं भवतिn_arg
नियंत्रणं।
इति सेट् कुर्वन्तुNone
विद्यमानं SQL समुच्चयकार्यं निष्कासयितुं ।
यथा सेट् कुर्वन्तुNone
विद्यमानं SQL समुच्चयकार्यं निष्कासयितुं ।
उदाहरण:
- class MySum:
- def __init__(self):
- self.count = 0
-
- def step(self, value):
- self.count += value
-
- def finalize(self):
- return self.count
-
- con = sqlite3.connect(":memory:")
- con.create_aggregate("mysum", 1, MySum)
- cur = con.execute("CREATE TABLE test(i)")
- cur.execute("INSERT INTO test(i) VALUES(1)")
- cur.execute("INSERT INTO test(i) VALUES(2)")
- cur.execute("SELECT mysum(i) FROM test")
- print(cur.fetchone()[0])
-
- con.close()
उपयोक्तृ-निर्धारितं समुच्चय-विण्डो-कार्यं रचयन्तु अथवा निष्कासयन्तु ।
मापदण्डः : १.
नामः (स्त्र) – निर्मातुं वा निष्कासयितुं वा SQL aggregate window function इत्यस्य नाम ।
num_params इति इति इति (int ) – SQL समुच्चयविण्डो फंक्शन् यत् आर्गुमेण्ट् स्वीकुर्वितुं शक्नोति तस्य संख्या । यदि-1
, यत्किमपि संख्यायां तर्कं गृह्णीयात् ।
समुच्चय_वर्गः (श्रेणी | न कश्चित्) -
एकः वर्गः यः निम्नलिखितविधयः कार्यान्वितुं अर्हति:
step()
: वर्तमानविण्डो मध्ये पङ्क्तिं योजयन्तु।
value()
: समुच्चयस्य वर्तमानमूल्यं प्रत्यागच्छतु ।
inverse()
: वर्तमानविण्डोतः एकां पङ्क्तिं निष्कासयन्तु।
finalize()
: समुच्चयस्य अन्तिमपरिणामं यथा प्रत्यागच्छतुSQLite द्वारा मूलतः समर्थितः प्रकारः.
तर्कानाम् संख्या यत् दstep()
तथाvalue()
पद्धतयः अवश्यं स्वीकुर्वन्ति इति नियन्त्रितम्num_params इति इति इति.
इति सेट् कुर्वन्तुNone
विद्यमानं SQL समुच्चयविण्डो फंक्शन् निष्कासयितुं ।
उत्थापयति : १.
समर्थितदोषः नास्ति– यदि 3.25.0 इत्यस्मात् प्राचीनस्य SQLite इत्यस्य संस्करणेन सह उपयुज्यते, यत् समुच्चय-विण्डो-कार्यं न समर्थयति ।
संस्करणे ३.११ योजितम् ।
उदाहरण:
# Example taken from https://www.sqlite.org/windowfunctions.html#udfwinfunc class WindowSumInt: def __init__(self): self.count = 0 def step(self, value): """Add a row to the current window.""" self.count += value def value(self): """Return the current value of the aggregate.""" return self.count def inverse(self, value): """Remove a row from the current window.""" self.count -= value def finalize(self): """Return the final value of the aggregate. Any clean-up actions should be placed here. """ return self.count con = sqlite3.connect(":memory:") cur = con.execute("CREATE TABLE test(x, y)") values = [ ("a", 4), ("b", 5), ("c", 3), ("d", 8), ("e", 1), ] cur.executemany("INSERT INTO test VALUES(?, ?)", values) con.create_window_function("sumint", 1, WindowSumInt) cur.execute(""" SELECT x, sumint(y) OVER ( ORDER BY x ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) AS sum_y FROM test ORDER BY x """) print(cur.fetchall()) con.close()
सृजन_संयोजन( .नामः, आह्वानीयम्, /)
नामकं संयोजनं रचयन्तुनामःcollating function इत्यस्य उपयोगेनआह्वानीयम्. आह्वानीयम्इति द्वौ पारितःसूत्रतर्काः, तत् च an प्रत्यागन्तुं अर्हतिपूर्णाङ्कः:
1
यदि प्रथमः द्वितीयापेक्षया उच्चतरः क्रमितः
-1
यदि प्रथमः द्वितीयात् न्यूनतरः क्रमितः भवति
0
यदि ते समानाः क्रमिताः
निम्नलिखित उदाहरणं विपरीतक्रमणसंयोजनं दर्शयति ।
def collate_reverse(string1, string2): if string1 == string2: return 0 elif string1 < string2: return 1 else: return -1 con = sqlite3.connect(":memory:") con.create_collation("reverse", collate_reverse) cur = con.execute("CREATE TABLE test(x)") cur.executemany("INSERT INTO test(x) VALUES(?)", [("a",), ("b",)]) cur.execute("SELECT x FROM test ORDER BY x COLLATE reverse") for row in cur: print(row) con.close()
सेट् कृत्वा एकं collation function निष्कासयन्तुआह्वानीयम्इत्यस्मैNone
.
संस्करण 3.11 मध्ये परिवर्तितम्: संकलननाम्ने कोऽपि यूनिकोडवर्णः भवितुम् अर्हति । पूर्वं केवलं ASCII वर्णानाम् अनुमतिः आसीत् ।
व्यवधान()
संयोजने निष्पादिताः भवेयुः इति यत्किमपि प्रश्नं निरस्तं कर्तुं भिन्नसूत्रात् एतत् विधिं आह्वयन्तु । निरस्तप्रश्नाः एकं उत्थापयिष्यन्तिOperationalError इति इति इति इति इति इति इति इति इति इति.
सेट_अधिकारकर्ता (अधिकृतकर्ता_कॉलबैक)
पंजीकर्आह्वानीयम् अधिकृतकर्ता_कॉलबैक दत्तांशकोशे सारणीयाः स्तम्भं प्राप्तुं प्रत्येकं प्रयत्नस्य कृते आह्वानं कर्तव्यम् । कॉलबैक् एकं प्रत्यागन्तुं अर्हतिSQLITE_OK इति इति, SQLITE_DENY इति इति, वाSQLITE_IGNORE इति इतिस्तम्भस्य अभिगमः अन्तर्निहितेन SQLite पुस्तकालयेन कथं नियन्त्रितव्यः इति संकेतं दातुं ।
कॉलबैकस्य प्रथमः तर्कः कीदृशं कार्यं अधिकृतव्यमिति सूचयति । द्वितीयः तृतीयः च तर्कः वा भविष्यति वाNone
प्रथमवादाश्रयम् । चतुर्थः तर्कः दत्तांशकोशस्य नाम (“main”, “temp”, इत्यादि) यदि प्रयोज्यम् । ५ तमः तर्कः अन्तः-अत्यन्तं ट्रिगरस्य अथवा दृश्यस्य नाम अस्ति यत् अभिगमन-प्रयासस्य उत्तरदायी अस्ति वाNone
यदि एषः अभिगमनप्रयासः प्रत्यक्षतया इनपुट् SQL कोडतः अस्ति ।
कृपया प्रथमस्य तर्कस्य सम्भाव्यमूल्यानां विषये प्रथमस्य आधारेण द्वितीयतृतीयस्य च तर्कस्य अर्थस्य विषये SQLite दस्तावेजीकरणं पश्यन्तु । सर्वे आवश्यकाः नित्याः उपलभ्यन्तेsqlite3
मॉड्यूल।
उत्तीर्णताNone
यथाअधिकृतकर्ता_कॉलबैकप्राधिकरणं निष्क्रियं करिष्यति।
संस्करणे 3.11 परिवर्तितम्: उपयोगेन प्राधिकरणं निष्क्रियं कर्तुं समर्थनं योजितम्None
.
सेट_प्रगति_संचालक (प्रगति_संचालक, न)
पंजीकर्आह्वानीयम् प्रगति_संचालकप्रत्येकं कृते आह्वानं कर्तव्यम्न SQLite वर्चुअल् मशीनस्य निर्देशाः । यदि भवान् दीर्घकालं यावत् चलितानां कार्याणां समये SQLite तः आह्वानं प्राप्तुम् इच्छति तर्हि एतत् उपयोगी भवति, उदाहरणार्थं GUI अद्यतनीकर्तुं ।
यदि भवान् पूर्वं संस्थापितं किमपि प्रगतिसञ्चालकं स्वच्छं कर्तुम् इच्छति तर्हि सह विधिं आह्वयन्तुNone
कृतेप्रगति_संचालक.
हन्डलर फंक्शन् तः शून्यरहितं मूल्यं प्रत्यागन्तुं वर्तमानं निष्पादितं प्रश्नं समाप्तं भविष्यति तथा च तस्य a उत्थापनस्य कारणं भविष्यतिदत्तांशकोशदोषःव्यपकर्ष।
सेट_ट्रेस_कॉलबैक (ट्रेस_कॉलबैक)
पंजीकर्आह्वानीयम् ट्रेस_कॉलबैकप्रत्येकस्य SQL कथनस्य कृते आह्वानं कर्तुं यत् वास्तवतः SQLite पृष्ठभागेन निष्पादितं भवति ।
कॉलबैक् प्रति प्रसारितः एकमात्रः तर्कः (asस्त्र ) यत् निष्पाद्यते। कॉलबैकस्य रिटर्न् मूल्यं उपेक्षितं भवति । ध्यानं कुर्वन्तु यत् पृष्ठभागः केवलं कृते पारितानि कथनानि न चालयतिकर्सर.निष्पादन () . विधयः । अन्येषु स्रोतेषु अन्तर्भवतिलेनदेन प्रबन्धनइतिsqlite3
module तथा वर्तमानदत्तांशकोशे परिभाषितानां ट्रिगर्-निष्पादनम् ।
उत्तीर्णताNone
यथाट्रेस_कॉलबैकट्रेस् कॉलबैक् निष्क्रियं करिष्यति ।
टीका
ट्रेस-कॉलबैक्-मध्ये उद्धृताः अपवादाः न प्रसारिताः भवन्ति । विकासस्य त्रुटिनिवारणस्य च सहायकत्वेन, उपयोगं कुर्वन्तुसक्षम_कॉलबैक_ट्रेसबैक ()ट्रेस-कॉलबैक्-मध्ये उत्थापित-अपवादात् ट्रेसबैक्-मुद्रणं सक्षमं कर्तुं ।
संस्करणे ३.३ योजितम् ।
सक्षम_भार_विस्तार(सक्षमम्, /)
साझापुस्तकालयात् SQLite विस्तारान् लोड् कर्तुं SQLite इञ्जिनं सक्षमं कुर्वन्तु ifसक्षमम्अस्तिTrue
; अन्यथा, SQLite विस्तारान् लोड् कर्तुं अस्वीकुर्वन्तु । SQLite विस्ताराः नूतनानि कार्याणि, समुच्चयानि वा सम्पूर्णतया नूतनानि वर्चुअल् टेबल् कार्यान्वयनम् परिभाषितुं शक्नुवन्ति । एकः प्रसिद्धः विस्तारः SQLite इत्यनेन सह वितरितः पूर्णपाठ-अन्वेषणविस्तारः अस्ति ।
टीका
दsqlite3
module पूर्वनिर्धारितरूपेण लोडेबल एक्सटेंशन समर्थनेन सह न निर्मितं भवति, यतः केषुचित् मञ्चेषु (उल्लेखनीयरूपेण macOS) SQLite पुस्तकालयाः सन्ति ये एतत् विशेषतां विना संकलिताः भवन्ति । लोडेबल एक्सटेंशन समर्थनं प्राप्तुं भवता उत्तीर्णं कर्तव्यम्--सक्षम-भारणीय-sqlite-विस्तारविकल्पः toविन्यस्तं कुर्वन्तु.
उत्थापयति अण्लेखापरीक्षा घटना sqlite3.enable_load_extension
तर्कैः सहconnection
, enabled
.
संस्करणे ३.२ योजितम् ।
संस्करणे ३.१० परिवर्तितम्: योजितम्sqlite3.enable_load_extension
लेखापरीक्षा घटना।
con.enable_load_extension(True) # Load the fulltext search extension con.execute("select load_extension('./fts3.so')") # alternatively you can load the extension using an API call: # con.load_extension("./fts3.so") # disable extension loading again con.enable_load_extension(False) # example from SQLite wiki con.execute("CREATE VIRTUAL TABLE recipe USING fts3(name, ingredients)") con.executescript(""" INSERT INTO recipe (name, ingredients) VALUES('broccoli stew', 'broccoli peppers cheese tomatoes'); INSERT INTO recipe (name, ingredients) VALUES('pumpkin stew', 'pumpkin onions garlic celery'); INSERT INTO recipe (name, ingredients) VALUES('broccoli pie', 'broccoli cheese onions flour'); INSERT INTO recipe (name, ingredients) VALUES('pumpkin pie', 'pumpkin sugar flour butter'); """) for row in con.execute("SELECT rowid, name, ingredients FROM recipe WHERE name MATCH 'pie'"): print(row)
भार_विस्तार(पथं, /, *, entrypoint=कोऽपि नास्ति)
साझापुस्तकालयात् SQLite विस्तारं लोड् कुर्वन्तु । सह विस्तारभारणं सक्षमं कुर्वन्तुसक्षम_भार_विस्तार () .एतत् पद्धतिं आह्वयितुं पूर्वं ।
मापदण्डः : १.
पथं (स्त्र) – SQLite विस्तारस्य मार्गः ।
प्रवेशबिन्दुः (स्त्र | न कश्चित् ) – प्रवेशबिन्दुनाम। यदिNone
(पूर्वनिर्धारितं), SQLite स्वस्य प्रवेशबिन्दुनाम सह आगमिष्यति; SQLite docs पश्यन्तुएकं विस्तारं लोडयतिविस्तरेण कृते।
उत्थापयति अण्लेखापरीक्षा घटना sqlite3.load_extension
तर्कैः सहconnection
, path
.
संस्करणे ३.२ योजितम् ।
संस्करणे ३.१० परिवर्तितम्: योजितम्sqlite3.load_extension
लेखापरीक्षा घटना।
संस्करणे 3.12 परिवर्तितम्: योजितम्प्रवेशबिन्दुःपैरामीटर्।
इटरडम्प() २.
Return anपुनरावर्तकः SQL स्रोतसङ्केतरूपेण आँकडाधारं डम्पं कर्तुं । पश्चात् पुनर्स्थापनार्थं स्मृति-अन्तर्गत-दत्तांशकोशं रक्षन्ते सति उपयोगी । सदृशम्.dump
आदेशः इतिsqlite3कोष्ठ।
उदाहरण:
# Convert file example.db to SQL dump file dump.sql con = sqlite3.connect('example.db') with open('dump.sql', 'w') as f: for line in con.iterdump(): f.write('%sn' % line) con.close()
अपि द्रष्टव्यम्
गैर-UTF-8 पाठसङ्केतनं कथं नियन्त्रयितुं शक्यते
बैकअप(लक्ष्य, *, पृष्ठानि=-1, प्रगति=कोऽपि नास्ति, नाम='मुख्य'।, निद्रा=०.२५०)
SQLite दत्तांशकोशस्य बैकअपं रचयन्तु ।
अन्यैः क्लायन्ट्-द्वारा अथवा समवर्तीरूपेण समानेन संयोजनेन दत्तांशकोशः अभिगतः अस्ति चेदपि कार्यं करोति ।
मापदण्डः : १.
लक्ष्य (संबन्धः) – बैकअपं रक्षितुं दत्तांशकोशसंयोजनम् ।
पृष्ठानि (int ) – एकस्मिन् समये प्रतिलिपिं कर्तुं पृष्ठानां संख्या । यदि समं न्यूनं वा0
, सम्पूर्णं दत्तांशकोशं एकस्मिन् पदे प्रतिलिपिकृतं भवति । पूर्वनिर्धारितं भवति-1
.
विकासः (callback | कोऽपि नास्ति) – यदि कआह्वानीयम्, प्रत्येकस्य बैकअप पुनरावृत्तेः कृते त्रयाणां पूर्णाङ्क-तर्कैः सह आह्वानं भवति: theस्थितिःअन्तिमपुनरावृत्तेः, theअवशिष्टअद्यापि प्रतिलिपिकरणीयानां पृष्ठानां संख्या, तथा चकुल पृष्ठानां संख्या । पूर्वनिर्धारितं भवतिNone
.
नामः (स्त्र ) – बैकअपं कर्तुं दत्तांशकोशस्य नाम । अन्यतर"main"
(पूर्वनिर्धारितं) मुख्यदत्तांशकोशस्य कृते,"temp"
अस्थायीदत्तांशकोशस्य कृते, अथवा इष्टदत्तांशकोशस्य नाम यथा संलग्नं भवति तस्य उपयोगेनATTACH DATABASE
SQL कथन।
शयनं करोतु (तारण) – अवशिष्टपृष्ठानां बैकअपं ग्रहीतुं क्रमिकप्रयासानां मध्ये निद्रायाः सेकण्ड्सङ्ख्या ।
उदाहरणम् १, विद्यमानं दत्तांशकोशं अन्यस्मिन् प्रतिलिपिं कुर्वन्तु:
def progress(status, remaining, total): print(f'Copied {total-remaining} of {total} pages...') src = sqlite3.connect('example.db') dst = sqlite3.connect('backup.db') with dst: src.backup(dst, pages=1, progress=progress) dst.close() src.close()
उदाहरणम् २, विद्यमानं दत्तांशकोशं क्षणिकप्रतिलिपौ प्रतिलिख्यताम् :
src = sqlite3.connect('example.db') dst = sqlite3.connect(':memory:') src.backup(dst) dst.close() src.close()
संस्करणे ३.७ योजितम् ।
अपि द्रष्टव्यम्
गैर-UTF-8 पाठसङ्केतनं कथं नियन्त्रयितुं शक्यते
getlimit( 1 .कोटी, /)
संयोजनस्य रनटाइम् सीमां प्राप्नुवन्तु।
मापदण्डः : १.
कोटी (int) – दSQLite सीमा श्रेणीपृष्टव्यः ।
प्रत्यागमनप्रकारः : १.
उत्थापयति : १.
ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति- यदिकोटीअन्तर्निहितेन SQLite पुस्तकालयेन न ज्ञायते ।
उदाहरणार्थं, SQL कथनस्य अधिकतमदीर्घतां पृच्छन्तुसंबन्धः con
(पूर्वनिर्धारितं 1000000000 अस्ति):
>>>
>>> con.getlimit(sqlite3.SQLITE_LIMIT_SQL_LENGTH) 1000000000
संस्करणे ३.११ योजितम् ।
setlimit( 1 .कोटी, सीमा, /)
संयोजनस्य रनटाइम् सीमां निर्धारयन्तु । तस्य कठिनोर्ध्वसीमायाः उपरि सीमां वर्धयितुं प्रयत्नाः मौनेन कठिनोर्ध्वसीमापर्यन्तं च्छिन्नाः भवन्ति । सीमा परिवर्तिता वा न वा इति न कृत्वा सीमायाः पूर्वमूल्यं प्रत्यागच्छति ।
मापदण्डः : १.
कोटी (int) – दSQLite सीमा श्रेणीसेट् करणीयः ।
सीमा (int ) – नूतनसीमायाः मूल्यम् । यदि ऋणात्मकं भवति तर्हि वर्तमानसीमा अपरिवर्तिता भवति ।
प्रत्यागमनप्रकारः : १.
उत्थापयति : १.
ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति- यदिकोटीअन्तर्निहितेन SQLite पुस्तकालयेन न ज्ञायते ।
उदाहरणार्थं, संलग्नदत्तांशकोशानां संख्यां 1 for इति सीमितं कुर्वन्तुसंबन्धः con
(पूर्वनिर्धारितसीमा १० अस्ति):
>>>
>>> con.setlimit(sqlite3.SQLITE_LIMIT_ATTACHED, 1) 10 >>> con.getlimit(sqlite3.SQLITE_LIMIT_ATTACHED) 1
संस्करणे ३.११ योजितम् ।
getconfig ( 1 .op, /)
एकं बूलियनसंयोजनविन्यासविकल्पं पृच्छन्तु ।
मापदण्डः : १.
op (int) - एकःSQLITE_DBCONFIG कोड.
प्रत्यागमनप्रकारः : १.
संस्करणे ३.१२ योजितम् ।
सेटविन्यास ( 1 .op, enable=सत्यम्, /)
एकं बूलियनसंयोजनविन्यासविकल्पं सेट् कुर्वन्तु ।
मापदण्डः : १.
op (int) - एकःSQLITE_DBCONFIG कोड.
सक्रियं करोतु (bool) – True
यदि विन्यासविकल्पः सक्षमः भवेत् (पूर्वनिर्धारितः);False
यदि तत् अक्षमं कर्तव्यम्।
संस्करणे ३.१२ योजितम् ।
क्रमाङ्कनम् ( .*, नाम='मुख्य'।)
एकं दत्तांशकोशं क्रमेण कृत्वा aबाइट् वस्तु। साधारणस्य डिस्क-दत्तांशकोशसञ्चिकायाः कृते क्रमाङ्कनं केवलं डिस्कसञ्चिकायाः प्रतिलिपिः एव । स्मृति-अन्तर्गत-दत्तांशकोशस्य अथवा “temp”-दत्तांशकोशस्य कृते, क्रमाङ्कनं बाइट्-समूहस्य स एव क्रमः भवति यत् यदि सः दत्तांशकोशः डिस्क-मध्ये बैकअप-कृतः स्यात् तर्हि डिस्क-मध्ये लिखितः स्यात् ।
मापदण्डः : १.
नामः (स्त्र ) – क्रमबद्धं कर्तव्यं दत्तांशकोशनाम । पूर्वनिर्धारितं भवति"main"
.
प्रत्यागमनप्रकारः : १.
टीका
एषा पद्धतिः केवलं तदा एव उपलब्धा यदा अन्तर्निहितस्य SQLite पुस्तकालयस्य serialize API अस्ति ।
संस्करणे ३.११ योजितम् ।
deserialize( 1 .दत्तांश, /, *, नाम='मुख्य'।)
Deserialize aक्रमबद्धःdatabase into aसंबन्धः . एतेन पद्धत्या दत्तांशकोशसम्बन्धः दत्तांशकोशात् विच्छिन्नः भवतिनामः, पुनः उद्घाट्य चनामःइत्यस्मिन् समाविष्टस्य क्रमाङ्कनस्य आधारेण स्मृति-अन्तर्गतदत्तांशकोशरूपेणदत्तांश.
मापदण्डः : १.
दत्तांश (बाइट्) – एकः क्रमबद्धः दत्तांशकोशः ।
नामः (स्त्र ) – विक्रमणं कर्तुं दत्तांशकोशनाम । पूर्वनिर्धारितं भवति"main"
.
उत्थापयति : १.
OperationalError इति इति इति इति इति इति इति इति इति इति– यदि दत्तांशकोशसंयोजनं सम्प्रति पठनव्यवहारे अथवा बैकअपक्रियायां सम्बद्धम् अस्ति।
दत्तांशकोशदोषः- यदिदत्तांशवैधं SQLite दत्तांशकोशं नास्ति ।
OverflowError इति इति- यदिलेन(दत्तांश) २.इत्यस्मात् बृहत्तरः अस्ति2**63 - 1
.
टीका
एषा पद्धतिः केवलं तदा एव उपलब्धा यदा अन्तर्निहितस्य SQLite पुस्तकालयस्य deserialize API अस्ति ।
संस्करणे ३.११ योजितम् ।
स्वप्रतिबद्धता
एतत् विशेषणं नियन्त्रयतिपीईपी २४९-अनुरूप व्यवहार व्यवहार।autocommit
त्रीणि अनुमतमूल्यानि सन्ति : १.
False
: विचिपीईपी २४९-अनुरूपव्यापारव्यवहारः, तत् बोधयन्sqlite3
व्यवहारः सर्वदा उद्घाटितः इति सुनिश्चितं करोति। उपयुञ्जताम्प्रविश्()तथारोलबैक () २.व्यवहारं बन्दं कर्तुं।
इति अनुशंसितं मूल्यम्autocommit
.
True
: SQLite इत्यस्य उपयोगं कुर्वन्तुस्वतःप्रतिबद्धताविधिः. प्रविश्()तथारोलबैक () २.अस्मिन् गुणे कोऽपि प्रभावः नास्ति ।
LEGACY_TRANSACTION_CONTROL: पूर्व-पायथन् ३.१२ (अ-पीईपी २४९ -अनुरूप) लेनदेन नियन्त्रण। पश्यतुपृथक्करण_स्तरअधिकविवरणार्थम्।
इदं सम्प्रति पूर्वनिर्धारितं मूल्यम् अस्तिautocommit
.
परिवर्तनम्autocommit
इत्यस्मैFalse
नूतनं व्यवहारं उद्घाटयिष्यति, तथा च परिवर्तयिष्यतिTrue
किमपि लम्बितव्यवहारं करिष्यति।
पश्यतुautocommit विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्अधिकविवरणार्थम्।
टीका
दपृथक्करण_स्तरविशेषणस्य कोऽपि प्रभावः नास्ति यावत्स्वप्रतिबद्धताअस्तिLEGACY_TRANSACTION_CONTROL.
संस्करणे ३.१२ योजितम् ।
व्यवहारे_
इदं केवलं पठनीयं विशेषता निम्नस्तरीयं SQLite इत्यनेन सह सङ्गच्छतेस्वतःप्रतिबद्धताविधिः.
True
यदि कश्चन व्यवहारः सक्रियः अस्ति (अप्रतिबद्धाः परिवर्तनाः सन्ति),False
अन्यथा।
संस्करणे ३.२ योजितम् ।
पृथक्करण_स्तर
नियन्त्रयतिविरासत लेनदेन निबन्धनविधिःइत्यस्यsqlite3
. यदि सेट् भवतिNone
, व्यवहाराः कदापि अन्तर्निहितरूपेण न उद्घाट्यन्ते। यदि एकं सेट् भवति"DEFERRED"
, "IMMEDIATE"
, वा"EXCLUSIVE"
, अन्तर्निहितस्य अनुरूपःSQLite लेनदेन व्यवहार, अन्तर्निहित लेनदेन प्रबन्धनक्रियते ।
यदि न अतिक्रान्तःपृथक्करण_स्तरपैरामीटर् ofसंयुज्(), पूर्वनिर्धारितम् अस्ति""
, यत् कृते उपनाम अस्ति"DEFERRED"
.
टीका
प्रयुज्यस्वप्रतिबद्धतालेनदेननियन्त्रणं नियन्त्रयितुं उपयोगस्य अपेक्षया अनुशंसितम् अस्तिisolation_level
. isolation_level
यावत् न प्रभावः भवतिस्वप्रतिबद्धताइति सेट् भवतिLEGACY_TRANSACTION_CONTROL(पूर्वनिर्धारितम्)।
पङ्क्ति_कारखाना
आद्यःपङ्क्ति_कारखानाकृतेकर्सर अस्मात् संयोगात् निर्मिताः वस्तूनि । अस्मिन् विशेषणे नियुक्तिः न प्रभावितं करोतिrow_factory
अस्य संयोजनस्य विद्यमानस्य कर्सरस्य, केवलं नूतनानां । अस्तिNone
पूर्वनिर्धारितरूपेण, अर्थात् प्रत्येकं पङ्क्तिः a इति रूपेण प्रत्यागच्छतितुपले.
पश्यतुपङ्क्तिकारखानानां निर्माणं उपयोगः च कथं करणीयःअधिकविवरणार्थम्।
पाठ_कारखाना
एकःआह्वानीयम्तत् स्वीकुर्वति कबाइट् पैरामीटर् अपि च तस्य पाठप्रतिपादनं प्रत्यागच्छति । आह्वानीयं SQLite मूल्यानां कृते आह्वानं भवतिTEXT
दत्तांशप्रकारः । पूर्वनिर्धारितरूपेण, एतत् विशेषता इति सेट् भवतिस्त्र.
पश्यतुगैर-UTF-8 पाठसङ्केतनं कथं नियन्त्रयितुं शक्यतेअधिकविवरणार्थम्।
कुल_परिवर्तन
दत्तांशकोशसंयोजनस्य उद्घाटनात् परं परिवर्तितानां, सम्मिलितानाम्, विलोपितानां वा दत्तांशकोशपङ्क्तयः कुलसङ्ख्यां प्रत्यागच्छतु ।
एकः
Cursor
वस्तु प्रतिनिधियति aदत्तांशकोश कर्सर यस्य उपयोगः SQL स्टेट्मेण्ट् निष्पादयितुं, तथा च fetch operation इत्यस्य सन्दर्भं प्रबन्धयितुं भवति । कर्सराः उपयुज्य निर्मीयन्तेसंयोजन.कर्सर() 1.1., अथवा कस्यापि प्रयोगेनसंयोजनशॉर्टकटविधयः.कर्सर वस्तुनि सन्तिपुनरावर्तकाः, यदि त्वंप्रभज्()एकः
SELECT
query, भवन्तः केवलं कर्सरस्य उपरि पुनरावृत्तिं कृत्वा परिणामितपङ्क्तयः आनेतुं शक्नुवन्ति:for row in cur.execute("SELECT t FROM data"): print(row)
श्रेणीsqlite3.कर्सर
एकःकर्सरinstance इत्यस्य निम्नलिखित विशेषताः पद्धतयः च सन्ति ।
प्रभज्(sql, पैरामीटर्स्=() २., /)
एकं SQL कथनं निष्पादयन्तु, वैकल्पिकरूपेण उपयोगेन Python मूल्यानि बाइन् कुर्वन्तुस्थानधारकाः.
मापदण्डः : १.
sql (स्त्र) – एकं SQL कथनम् ।
पैरामीटर्स् (dict | श्रेणी) – प्लेसहोल्डर्स् मध्ये बाइण्ड् कर्तुं पायथन् मूल्यानिsql . एकःdict
यदि नामकृतस्थानधारकाणां उपयोगः भवति। यदि अनामस्थानधारकाः उपयुज्यन्ते तर्हि एकः क्रमः । पश्यतुSQL प्रश्नेषु मूल्यानि बाइण्ड् कर्तुं प्लेसहोल्डर् इत्यस्य उपयोगः कथं करणीयः.
उत्थापयति : १.
ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति- यदिsqlएकादशाधिकं SQL स्टेट्मेण्ट् अस्ति ।
यदिस्वप्रतिबद्धताअस्तिLEGACY_TRANSACTION_CONTROL, पृथक्करण_स्तरइति नNone
, sqlइति अण्INSERT
, UPDATE
, DELETE
, वाREPLACE
कथनम्, तथा च मुक्तव्यापारः नास्ति, व्यवहारः निष्पादनात् पूर्वं अन्तर्निहितरूपेण उद्घाटितः भवतिsql.
3.12 संस्करणात् अप्रचलितं, 3.14 संस्करणे निष्कासितम् भविष्यति:अवहेलनाचेतावनीउत्सर्ज्यते यदिनाम स्थानधारकाःप्रयुज्यन्ते चपैरामीटर्स्इति कस्य स्थाने क्रमःdict . पायथन् ३.१४, २.ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इतितस्य स्थाने उत्थापितः भविष्यति।
उपयुञ्जताम्निष्पादनस्क्रिप्ट्() २.एकाधिकं SQL कथनानि निष्पादयितुं ।
निष्पादनबहु(sql, पैरामीटर्स्, /)
प्रत्येकं द्रव्यस्य कृते inपैरामीटर्स्, पुनः पुनः निष्पादनम्पैरामीटराइज्डDML SQL कथनम्sql.
यथा अन्तर्निहितव्यवहारनियन्त्रणं उपयुज्यतेप्रभज्().
मापदण्डः : १.
sql (स्त्र) – एकं SQL DML कथनम् ।
पैरामीटर्स् (पुनरावर्तनीयम्) – प्लेसहोल्डर्स् इत्यनेन सह बन्धनार्थं पैरामीटर्स् इत्यस्य पुनरावर्तनीयम्sql . पश्यतुSQL प्रश्नेषु मूल्यानि बाइण्ड् कर्तुं प्लेसहोल्डर् इत्यस्य उपयोगः कथं करणीयः.
उत्थापयति : १.
ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति- यदिsqlएकादशाधिकं SQL स्टेट्मेण्ट् अस्ति, अथवा DML स्टेट्मेण्ट् नास्ति ।
उदाहरण:
rows = [ ("row1",), ("row2",), ] # cur is an sqlite3.Cursor object cur.executemany("INSERT INTO data VALUES(?)", rows)
टीका
यत्किमपि परिणामी पङ्क्तिः परित्यज्यते, यत्र DML कथनानि सन्तिRETURNING इति खण्डाः.
3.12 संस्करणात् अप्रचलितं, 3.14 संस्करणे निष्कासितम् भविष्यति:अवहेलनाचेतावनीउत्सर्ज्यते यदिनाम स्थानधारकाःप्रयुक्ताः सन्ति तथा च द्रव्याणिपैरामीटर्स्इत्यस्य स्थाने क्रमाः सन्तिdict स. पायथन् ३.१४, २.ProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इतितस्य स्थाने उत्थापितः भविष्यति।
निष्पादनस्क्रिप्ट्(sql_स्क्रिप्ट्, /)
इत्यस्मिन् SQL स्टेट्मेण्ट् निष्पादयन्तुsql_स्क्रिप्ट् . यदि दस्वप्रतिबद्धताअस्तिLEGACY_TRANSACTION_CONTROLतत्र च लम्बितव्यापारः, अन्तर्निहितःCOMMIT
कथनं प्रथमं निष्पादितं भवति। अन्यत् अन्तर्निहितव्यवहारनियन्त्रणं न क्रियते; किमपि व्यवहारनियन्त्रणं अवश्यं योजयितव्यम्sql_स्क्रिप्ट्.
sql_स्क्रिप्ट्अवश्यं कसूत्र.
उदाहरण:
# cur is an sqlite3.Cursor object cur.executescript(""" BEGIN; CREATE TABLE person(firstname, lastname, age); CREATE TABLE book(title, author, published); CREATE TABLE publisher(name, address); COMMIT; """)
आनयनम्() २.
यदिपङ्क्ति_कारखानाअस्तिNone
, अग्रिमपङ्क्तिप्रश्नपरिणामं a रूपेण सेट् कृत्वा प्रेषयन्तुतुपले . अन्यथा पङ्क्तिकारखानं प्रति गत्वा तस्य परिणामं प्रत्यागच्छतु । निर्वतनम्None
यदि अधिकदत्तांशः उपलब्धः नास्ति।
आनयति बहु( .आकार = कर्सर.सरण आकार)
प्रश्नपरिणामस्य पङ्क्तयः अग्रिमसमूहं a इति रूपेण प्रत्यागच्छतुसूची . यदि अधिकाः पङ्क्तयः उपलब्धाः न सन्ति तर्हि रिक्तसूचीं प्रत्यागच्छतु ।
प्रति-आह्वानं आनेतुं पङ्क्तिसङ्ख्या निर्दिष्टा भवतिआकृति पैरामीटर्। यदिआकृतिन दीयते, २.arrayize इति आनेतुं पङ्क्तिसङ्ख्यां निर्धारयति । यदि न्यूनम्आकृतिपङ्क्तयः उपलभ्यन्ते, यावन्तः पङ्क्तयः उपलभ्यन्ते तावन्तः प्रत्यागच्छन्ति ।
ध्यानं कुर्वन्तु तत्र कार्यप्रदर्शनविचाराः सम्बद्धाः सन्तिआकृति पैरामीटर्। इष्टतमप्रदर्शनार्थं प्रायः arraysize विशेषतायाः उपयोगः सर्वोत्तमः भवति । यदि दआकृतिपैरामीटर् उपयुज्यते, तर्हि एकस्मात् समानं मूल्यं धारयितुं तस्य कृते श्रेयस्करम्आनयति बहु() २.परं आह्वयतु।
fetchall() ९.
प्रश्नपरिणामस्य सर्वाणि (शेषाणि) पङ्क्तयः aसूची . यदि पङ्क्तयः उपलब्धाः न सन्ति तर्हि रिक्तसूचीं प्रत्यागच्छतु । ध्यानं कुर्वन्तु यत् दarrayize इतिattribute अस्य क्रियायाः कार्यप्रदर्शनं प्रभावितं कर्तुं शक्नोति ।
पिधानं करोतु()
कर्सरं इदानीं पिधायताम् (यदा कदापि न__del__
इति उच्यते)।
अस्मात् बिन्द्वात् अग्रे कर्सरः अनुपयोगी भविष्यति; एकःProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इतियदि कर्सरेन सह किमपि क्रियायाः प्रयासः क्रियते तर्हि अपवादः उत्थापितः भविष्यति ।
सेटिनपुटसाइज(आकाराः, /)
DB-API द्वारा आवश्यकम्। न किमपि करोतिsqlite3
.
सेटआउटपुटसाइज(आकृति, स्तम्भ=कोऽपि नास्ति, /)
DB-API द्वारा आवश्यकम्। न किमपि करोतिsqlite3
.
arrayize इति
Read/write विशेषता यत् द्वारा प्रत्यागतानां पङ्क्तयः संख्यां नियन्त्रयतिआनयति बहु() २. . पूर्वनिर्धारितं मूल्यं 1 अस्ति यस्य अर्थः अस्ति यत् प्रति आह्वानं एकः पङ्क्तिः आनयिष्यते स्म ।
संयोगः
केवलं पठनीयं विशेषता यत् SQLite दत्तांशकोशं प्रदातिसंबन्धः कर्सरस्य सम्बन्धी । एकःकर्सरआह्वानेन निर्मितं वस्तुकन्.कर्सर() २.भविष्यति कसंयोगःविशेषणं यत् निर्दिशतिcon:
>>>
>>> con = sqlite3.connect(":memory:") >>> cur = con.cursor() >>> cur.connection == con True >>> con.close()
वर्णनम्
केवलं पठनीयं विशेषता यत् अन्तिमप्रश्नस्य स्तम्भनामानि प्रदाति । Python DB API इत्यनेन सह संगतं भवितुं, प्रत्येकस्य स्तम्भस्य कृते 7-tuple प्रेषयति यत्र प्रत्येकस्य tuple इत्यस्य अन्तिमषट् वस्तूनि सन्तिNone
.
इति कृते सेट् भवतिSELECT
कथनानि अपि कस्यापि मेलपङ्क्तिं विना।
लास्ट्रोविड्
केवलं पठनीयं विशेषता यत् अन्तिमस्य सम्मिलितपङ्क्तौ पङ्क्ति-id प्रदाति । सफलस्य अनन्तरं एव अद्यतनं भवतिINSERT
वाREPLACE
इत्यस्य उपयोगेन कथनानिप्रभज्() प्रक्रिया। अन्यवाक्यानां कृते परम्execute many() ९.वानिष्पादनस्क्रिप्ट्() २., अथवा यदि निवेशनं विफलं जातम्, तर्हि इत्यस्य मूल्यम्lastrowid
अपरिवर्तितं त्यज्यते। इत्यस्य प्रारम्भिकं मूल्यम्lastrowid
अस्तिNone
.
टीका
अन्तः निवेशयतिWITHOUT ROWID
सारणीः न अभिलेखिताः भवन्ति।
संस्करणे 3.6 परिवर्तितम्: कृते समर्थनं योजितम्REPLACE
वक्तव्यम्।
पङ्क्तिगणना
केवलं पठनीयं विशेषता यत् कृते परिवर्तितपङ्क्तयः संख्यां प्रदातिINSERT
, UPDATE
, DELETE
, तथाREPLACE
कथनानि; अस्ति-1
अन्येषां कथनानां कृते, यत्र CTE प्रश्नाः अपि सन्ति । केवलं द्वारा अद्यतनं भवतिप्रभज्()तथाexecute many() ९. methods, कथनस्य समाप्तिपर्यन्तं धावितस्य अनन्तरम् । अस्य अर्थः अस्ति यत् यत्किमपि परिणामी पङ्क्तयः क्रमेण आनेतव्याःrowcount
अद्यतनं कर्तुं।
पङ्क्ति_कारखाना
अस्मात् पङ्क्तिः कथं आगतवती इति नियन्त्रयन्तुCursor
प्रतिपाद्यते । यदिNone
, पङ्क्तिः क इति प्रतिपाद्यतेतुपले . समाविष्टेषु सेट् कर्तुं शक्यतेsqlite3.पङ्क्तिः ; अथवा कआह्वानीयम्यत् तर्कद्वयं स्वीकुर्वति, ककर्सरवस्तु चtuple
of row values, तथा च SQLite पङ्क्तिं प्रतिनिधियन् कस्टम् ऑब्जेक्ट् रिटर्न् करोति ।
किं प्रति पूर्वनिर्धारितम्संयोजन.पङ्क्ति_कारखानाwas set to when theCursor
निर्मितः आसीत् । अस्मिन् विशेषणे नियुक्तिः न प्रभावितं करोतिसंयोजन.पङ्क्ति_कारखानामातापितृसम्बन्धस्य।
पश्यतुपङ्क्तिकारखानानां निर्माणं उपयोगः च कथं करणीयःअधिकविवरणार्थम्।
श्रेणीsqlite3.पङ्क्तिः
एकःRow
instance अत्यन्तं अनुकूलितस्य रूपेण कार्यं करोतिपङ्क्ति_कारखानाकृतेसंबन्धः विषयाः । एतत् पुनरावृत्तिम्, समतापरीक्षणं, .लेन() २., तथामानचित्रणम्स्तम्भनाम अनुक्रमणिका च अभिगमः ।
द्विRow
वस्तुनः समानाः तुलनां कुर्वन्ति यदि तेषां स्तम्भनामानि मूल्यानि च समानानि सन्ति ।
पश्यतुपङ्क्तिकारखानानां निर्माणं उपयोगः च कथं करणीयःअधिकविवरणार्थम्।
कील() २.
पुनरागमनं कसूचीस्तम्भनामानां यथाताराः . प्रश्नस्य अनन्तरं तत्क्षणमेव प्रत्येकस्य tuple in इत्यस्य प्रथमः सदस्यः भवतिकर्सर.विवरणम्.
संस्करणे ३.५ परिवर्तितम्: स्लाइसिंग् इत्यस्य समर्थनं योजितम् ।
श्रेणीsqlite3.ब्लोब
संस्करणे ३.११ योजितम् ।
एकःब्लोबदृष्टान्त इति कसञ्चिकासदृशं वस्तु यत् SQLite BLOB इत्यस्मिन् दत्तांशं पठितुं लिखितुं च शक्नोति । आह्वानम्लेन(ब्लोब) २. ब्लोब् इत्यस्य आकारं (बाइट्-सङ्ख्या) प्राप्तुं । सूचकाङ्कानां प्रयोगं कुर्वन्तु तथा चस्लाइस्blob data इत्यस्य प्रत्यक्षप्रवेशार्थं ।
प्रयोगं कुर्वन्तुब्लोबयथा कसन्दर्भ प्रबन्धकउपयोगानन्तरं blob handle पिहितं भवति इति सुनिश्चितं कर्तुं ।
con = sqlite3.connect(":memory:") con.execute("CREATE TABLE test(blob_col blob)") con.execute("INSERT INTO test(blob_col) VALUES(zeroblob(13))") # Write to our blob, using two write operations: with con.blobopen("test", "blob_col", 1) as blob: blob.write(b"hello, ") blob.write(b"world.") # Modify the first and last bytes of our blob blob[0] = ord("H") blob[-1] = ord("!") # Read the contents of our blob with con.blobopen("test", "blob_col", 1) as blob: greeting = blob.read() print(greeting) # outputs "b'Hello, world!'" con.close()
पिधानं करोतु()
ब्लोब् पिधाय।
अतः परं ब्लोब् अनुपयोगी भविष्यति । एकम्त्रुटि(अथवा उपवर्गः) अपवादः उत्थापितः भविष्यति यदि ब्लोब् इत्यनेन सह किमपि अधिकं कार्यं प्रयत्नः क्रियते ।
पठतु(लम्बाई=-1, /)
पठतुदैर्घ्यम् वर्तमान-अफसेट्-स्थाने ब्लोब्-तः दत्तांशस्य बाइट्-मात्राः । यदि ब्लोब् इत्यस्य अन्तः प्राप्तः भवति तर्हि EOF पर्यन्तं दत्तांशः प्रत्यागमिष्यति । कदादैर्घ्यम्न निर्दिष्टः, नकारः वा, २.पठतु()ब्लोब् इत्यस्य अन्त्यपर्यन्तं पठिष्यति।
लिखतु(दत्तांश, /)
लिखतुदत्तांश वर्तमान-अफसेट्-स्थले ब्लोब्-इत्यस्मै । एतत् कार्यं blob दीर्घतां परिवर्तयितुं न शक्नोति । ब्लोबस्य अन्ते परं लेखनं उत्थापयिष्यतिमूल्यत्रुटिः.
कथय()
ब्लोब् इत्यस्य वर्तमानं अभिगमनस्थानं प्रत्यागच्छतु ।
अन्विष्यति(offset इति इति, उत्पत्ति = os.SEEK_SET, /)
ब्लोब् इत्यस्य वर्तमानं अभिगमस्थानं इति सेट् कुर्वन्तुoffset इति इति . दश्रोतंतर्कः पूर्वनिर्धारितः भवतिos.SEEK_SET इति इति (निरपेक्ष ब्लॉब स्थिति)। अन्ये मूल्यानि कृतेश्रोतंसन्तिos.SEEK_CUR इति इति(वर्तमानस्थानस्य सापेक्षतया अन्वेष्टुम्) तथाos.SEEK_END इति इति(ब्लोबस्य अन्ते सापेक्षतया अन्वेष्टुम्)।
श्रेणीsqlite3.PrepareProtocol
PrepareProtocol प्रकारस्य एकः उद्देश्यः अस्ति यत् aपीईपी २४६शैली अनुकूलनप्रोटोकॉलं वस्तुनां कृते यत् शक्नुवन्तिस्वयमेव अनुकूलतां कुर्वन्तिइत्यस्मैदेशी SQLite प्रकार.
अपवादपदानुक्रमः DB-API 2.0 (पीईपी २४९).
व्यपकर्षsqlite3.चेतावनी
अयं अपवादः सम्प्रति न उत्थापितःsqlite3
module, परन्तु उपयोगेन अनुप्रयोगैः उत्थापितं भवितुम् अर्हतिsqlite3
, उदाहरणार्थं यदि उपयोक्तृनिर्धारितं कार्यं सम्मिलितं कुर्वन् दत्तांशं कटयति ।Warning
इति उपवर्गःव्यपकर्ष.
व्यपकर्षsqlite3.त्रुटिः
अस्मिन् मॉड्यूले अन्येषां अपवादानाम् आधारवर्गः । एकेन एकेन सर्वाणि दोषाणि ग्रहीतुं एतस्य उपयोगं कुर्वन्तुविहायवक्तव्यम्।Error
इति उपवर्गःव्यपकर्ष.
यदि अपवादः SQLite पुस्तकालयस्य अन्तः उत्पन्नः अस्ति तर्हि अपवादस्य मध्ये निम्नलिखितविशेषताद्वयं योजितं भवति ।
sqlite_त्रुटिकोड
तः संख्यात्मकदोषसङ्केतःSQLite एपिआइ
संस्करणे ३.११ योजितम् ।
sqlite_त्रुटिनाम
तः संख्यात्मकदोषसङ्केतस्य प्रतीकात्मकं नामSQLite एपिआइ
संस्करणे ३.११ योजितम् ।
व्यपकर्षsqlite3.InterfaceError इति
निम्नस्तरीयस्य SQLite C API इत्यस्य दुरुपयोगाय अपवादः उत्थापितः । अन्येषु शब्देषु, यदि एषः अपवादः उत्थापितः भवति तर्हि सम्भवतः एतत् दोषं सूचयतिsqlite3
मॉड्यूल।InterfaceError
इति उपवर्गःत्रुटि.
व्यपकर्षsqlite3.दत्तांशकोशत्रुटि
दत्तांशकोशसम्बद्धानां दोषाणां कृते अपवादः उत्थापितः । एतत् अनेकप्रकारस्य दत्तांशकोशदोषाणां आधारअपवादरूपेण कार्यं करोति । विशेषोपवर्गद्वारा एव अन्तर्निहितरूपेण उत्थाप्यते ।DatabaseError
इति उपवर्गःत्रुटि.
व्यपकर्षsqlite3.दत्तांशत्रुटिः
संसाधितदत्तांशस्य समस्याभिः उत्पद्यमानानां दोषाणां कृते अपवादः उत्थापितः, यथा परिधितः बहिः संख्यात्मकमूल्यानि, अतिदीर्घाः च ताराः ।DataError
इति उपवर्गःदत्तांशकोशदोषः.
व्यपकर्षsqlite3.सञ्चालनदोष
अपवादः तेषां दोषाणां कृते उत्थापितः ये दत्तांशकोशस्य संचालनेन सह सम्बद्धाः सन्ति, न तु प्रोग्रामरस्य नियन्त्रणे इति अनिवार्यम् । यथा, दत्तांशकोशमार्गः न लभ्यते, अथवा व्यवहारः संसाधितुं न शक्तः ।OperationalError
इति उपवर्गःदत्तांशकोशदोषः.
व्यपकर्षsqlite3.अखण्डतात्रुटि
अपवादः तदा उत्थापितः यदा दत्तांशकोशस्य सम्बन्धात्मका अखण्डता प्रभाविता भवति, यथा विदेशीयकुञ्जीपरीक्षा विफलः भवति । इति उपवर्गःदत्तांशकोशदोषः.
व्यपकर्षsqlite3.आन्तरिकदोष
यदा SQLite आन्तरिकदोषस्य सम्मुखीभवति तदा अपवादः उत्थापितः । यदि एतत् उत्थापितं भवति तर्हि एतत् सूचयितुं शक्नोति यत् रनटाइम् SQLite पुस्तकालयस्य समस्या अस्ति ।InternalError
इति उपवर्गःदत्तांशकोशदोषः.
व्यपकर्षsqlite3.प्रोग्रामिंगत्रुटि
अपवादः कृते उद्धृतःsqlite3
एपिआइ प्रोग्रामिंग् त्रुटयः, उदाहरणार्थं कस्मैचित् प्रश्नाय गलतसङ्ख्यायाः बाइण्डिंग्-आपूर्तिः, अथवा बन्द-स्थाने कार्यं कर्तुं प्रयत्नःसंबन्धः. ProgrammingError
इति उपवर्गःदत्तांशकोशदोषः.
व्यपकर्षsqlite3.समर्थितत्रुटिः नास्ति
अपवादः उत्थापितः यस्मिन् सन्दर्भे कश्चन विधिः अथवा आँकडाधार एपिआइ अन्तर्निहितेन SQLite पुस्तकालयेन समर्थितः नास्ति । यथा सेट्नियतात्मकःइत्यस्मैTrue
इत्यस्मिन्create_function () 1.1., यदि अन्तर्निहितः SQLite पुस्तकालयः नियतात्मककार्यस्य समर्थनं न करोति ।NotSupportedError
इति उपवर्गःदत्तांशकोशदोषः.
SQLite मूलतः निम्नलिखितप्रकारस्य समर्थनं करोति ।NULL
, INTEGER
, REAL
, TEXT
, BLOB
.
एवं निम्नलिखित पायथन् प्रकाराः SQLite मध्ये विना किमपि समस्यां प्रेषयितुं शक्यन्ते:
एतत् SQLite प्रकाराः पूर्वनिर्धारितरूपेण Python प्रकारेषु परिवर्तिताः भवन्ति:
SQLite प्रकार | पायथन् प्रकारः |
---|---|
|
|
| |
| |
| आश्रित्य भवतिपाठ_कारखाना, स्त्रपूर्वनिर्धारितरूपेण |
|
प्रकारव्यवस्थायाःsqlite3
module इत्येतत् द्वयोः प्रकारयोः विस्तारयोग्यं भवति: भवान् SQLite दत्तांशकोशे अतिरिक्तं Python प्रकारान् मार्गेण संग्रहीतुं शक्नोतिवस्तु अनुकूलकाः, तथा भवन्तः द...sqlite3
module SQLite प्रकारान् Python प्रकारेषु परिवर्तयति viaपरिवर्तकाः.
टीका
पूर्वनिर्धारित-एडाप्टर्-परिवर्तकाः च पायथन् ३.१२ तः अप्रचलिताः सन्ति । तस्य स्थाने प्रयोगं कुर्वन्तुएडाप्टर तथा कन्वर्टर नुस्खातथा भवतः आवश्यकतानुसारं तान् अनुकूलयन्तु।
अप्रचलिताः पूर्वनिर्धारित-एडाप्टर्-परिवर्तकाः च सन्ति:
कृते एकः एडाप्टरःतिथिसमय।तिथिआक्षेपाः इतिताराःइत्यस्मिन्ISO 8601 इति इतिप्रारूपम् ।
कृते एकः एडाप्टरःतिथिसमय।तिथिसमयISO 8601 प्रारूपेण स्ट्रिंग् प्रति वस्तुनि स्थापयति ।
कृते एकः परिवर्तकःघोषितम्“तिथिः” इति प्रकारः भवतितिथिसमय।तिथिविषयाः ।
घोषितस्य “timestamp” कृते एकः परिवर्तकः toतिथिसमय।तिथिसमय विषयाः । भिन्नात्मकभागाः ६ अङ्केषु (माइक्रोसेकेण्ड् सटीकता) यावत् कटिताः भविष्यन्ति ।
टीका
पूर्वनिर्धारितः “timestamp” परिवर्तकः दत्तांशकोशे UTC offsets इत्यस्य अवहेलनां करोति तथा च सर्वदा naive इति प्रत्यागच्छतितिथिसमय।तिथिसमय वस्तु। समयमुद्रिकासु UTC-अफसेट्-संरक्षणार्थं, परिवर्तकान् अक्षमान् त्यजन्तु, अथवा सह आफ्सेट्-जागरूक-परिवर्तकं पञ्जीकरणं कुर्वन्तुरजिस्टर_परिवर्तक () ..
संस्करण 3.12 तः अप्रचलितम् ।
दsqlite3
module इत्येतत् स्क्रिप्ट् रूपेण आह्वयितुं शक्यते, व्याख्याकारस्य उपयोगेन-म switch, सरलं SQLite शेल् प्रदातुं क्रमेण । तर्कहस्ताक्षरं यथा भवति ।
python -m sqlite3 [-h] [-v] [filename] [sql]
प्रकारः.quit
अथवा CTRL-D इत्यनेन शेल् तः निर्गन्तुं शक्यते ।
-ह, --सहाय
CLI सहायतां मुद्रयन्तु।
-व, --संस्करणम्
अन्तर्निहितं SQLite पुस्तकालयसंस्करणं मुद्रयन्तु ।
संस्करणे ३.१२ योजितम् ।
SQL-सञ्चालनेषु प्रायः पायथन्-चरात् मूल्यानां उपयोगः आवश्यकः भवति । तथापि, प्रश्नान् संयोजयितुं पायथन् इत्यस्य स्ट्रिंग् ऑपरेशन्स् इत्यस्य उपयोगं कर्तुं सावधानाः भवन्तु, यतः ते दुर्बलाः सन्तिSQL इन्जेक्शन आक्रमणानि . यथा, आक्रमणकारी केवलं एकं उद्धरणं पिधाय इन्जेक्ट् कर्तुं शक्नोतिOR TRUE
सर्वाणि पङ्क्तयः चयनं कर्तुं : १.
>>>
>>> # Never do this -- insecure! >>> symbol = input() ' OR TRUE; -- >>> sql = "SELECT * FROM stocks WHERE symbol = '%s'" % symbol >>> print(sql) SELECT * FROM stocks WHERE symbol = '' OR TRUE; --' >>> cur.execute(sql)
तस्य स्थाने DB-API इत्यस्य पैरामीटर् प्रतिस्थापनस्य उपयोगं कुर्वन्तु । क्वेरी स्ट्रिंग् मध्ये चरं सम्मिलितुं स्ट्रिंग् मध्ये प्लेस्होल्डर् इत्यस्य उपयोगं कुर्वन्तु, तथा च वास्तविकमूल्यानि क्वेरी मध्ये a रूपेण प्रदातुं प्रतिस्थापयन्तुतुपलेof values to the second argument of the cursor इत्यस्यप्रभज्()प्रक्रिया।
SQL कथनम् द्वयोः प्रकारयोः स्थानधारकयोः एकस्य उपयोगं कर्तुं शक्नोति: प्रश्नचिह्नानि (qmark शैली) अथवा नामकृतस्थानधारकाः (नामशैली) । qmark शैल्याः कृते .पैरामीटर्स्अवश्यं कश्रेणीयस्य दीर्घता स्थानधारकसङ्ख्यायाः अनुरूपं भवितुमर्हति, अथवा कProgrammingError इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति इति उत्थाप्यते । नामाङ्कितशैल्याः कृते .पैरामीटर्स्अवश्यं कस्य उदाहरणं भवितुमर्हतिdict (अथवा उपवर्गः), यस्मिन् सर्वेषां नामकृतानां मापदण्डानां कृते कुञ्जिकाः अवश्यं सन्ति; यत्किमपि अतिरिक्तं वस्तु उपेक्षितं भवति। अत्र उभयशैल्याः उदाहरणम् अस्ति :
con = sqlite3.connect(":memory:") cur = con.execute("CREATE TABLE lang(name, first_appeared)") # This is the named style used with executemany(): data = ( {"name": "C", "year": 1972}, {"name": "Fortran", "year": 1957}, {"name": "Python", "year": 1991}, {"name": "Go", "year": 2009}, ) cur.executemany("INSERT INTO lang VALUES(:name, :year)", data) # This is the qmark style used in a SELECT query: params = (1972,) cur.execute("SELECT * FROM lang WHERE first_appeared = ?", params) print(cur.fetchall()) con.close()
टीका
पीईपी २४९संख्यात्मकस्थानधारकाः सन्तिनहि समर्थितम् । यदि प्रयुक्तं भवति तर्हि तेषां व्याख्या नामाङ्कितस्थानधारकाः इति भविष्यति ।
SQLite केवलं दत्तांशप्रकारस्य सीमितसमूहं देशीरूपेण समर्थयति । SQLite आँकडाकोषेषु कस्टम् पायथन् प्रकारान् संग्रहीतुं,अनुकूलयेत्तान् एकं प्रतिपायथन् प्रकाराः SQLite मूलतः अवगच्छति.
Python ऑब्जेक्ट्स् SQLite प्रकारेषु अनुकूलितुं द्वौ उपायौ स्तः: भवतः ऑब्जेक्ट् स्वयमेव अनुकूलितुं दत्तुं, अथवा an इत्यस्य उपयोगःएडाप्टर आह्वानीय . पूर्वस्य उपरि उत्तरं प्राधान्यं प्राप्स्यति। इष्टप्रकारं निर्यातयति इति पुस्तकालयस्य कृते तस्य प्रकारस्य स्वयमेव अनुकूलतां सक्षमं कर्तुं सार्थकं भवेत् । एकः अनुप्रयोगविकासकः इति नाम्ना कस्टम् एडाप्टरकार्यं पञ्जीकृत्य प्रत्यक्षनियन्त्रणं ग्रहीतुं अधिकं सार्थकं भवितुम् अर्हति ।
मानातु अस्माकं कPoint
वर्गः यः निर्देशांकयुगलं प्रतिनिधियति,x
तथाy
, कार्टेशियन निर्देशांकप्रणाल्यां । निर्देशांकयुगलं दत्तांशकोशे पाठमालरूपेण संगृहीतं भविष्यति, निर्देशाङ्कानां पृथक्करणार्थं अर्धविरामस्य उपयोगेन । एतत् क__conform__(self, protocol)
method यत् अनुकूलितं मूल्यं प्रत्यागच्छति । वस्तु व्यतीतम्प्रोटोकॉलप्रकारस्य भविष्यतिPrepareProtocol.
class Point: def __init__(self, x, y): self.x, self.y = x, y def __conform__(self, protocol): if protocol is sqlite3.PrepareProtocol: return f"{self.x};{self.y}" con = sqlite3.connect(":memory:") cur = con.cursor() cur.execute("SELECT ?", (Point(4.0, -3.2),)) print(cur.fetchone()[0]) con.close()
अन्यः सम्भावना अस्ति यत् एकं फंक्शन् निर्मातुं यत् Python ऑब्जेक्ट् SQLite-सङ्गतप्रकारे परिवर्तयति । ततः एतत् कार्यं उपयुज्य पञ्जीकरणं कर्तुं शक्यतेरजिस्टर_अनुकूलक () ..
class Point: def __init__(self, x, y): self.x, self.y = x, y def adapt_point(point): return f"{point.x};{point.y}" sqlite3.register_adapter(Point, adapt_point) con = sqlite3.connect(":memory:") cur = con.cursor() cur.execute("SELECT ?", (Point(1.0, 2.5),)) print(cur.fetchone()[0]) con.close()
एडाप्टरं लिखित्वा परिवर्तनं भवतिइत्यस्मात्कस्टम पायथन प्रकारइत्यस्मै SQLite मूल्यानि। परिवर्तनं कर्तुं शक्नुवन्इत्यस्मात्SQLite मूल्यानिइत्यस्मैcustom Python types, वयं उपयुञ्ज्महेपरिवर्तकाः.
पुनः गच्छामःPoint
श्रेणी। वयं अर्धविरामद्वारा पृथक्कृतानि x तथा y निर्देशांकाः SQLite मध्ये स्ट्रिंग् रूपेण संगृहीतवन्तः ।
प्रथमं वयं कन्वर्टर फंक्शन् परिभाषयामः यत् स्ट्रिंग् इत्येतत् पैरामीटर् रूपेण स्वीकृत्य a इत्यस्य निर्माणं करोतिPoint
तस्मात् वस्तु ।
टीका
परिवर्तक कार्याणि सन्तिसर्वदाउत्तीर्ण aबाइट्वस्तु, अन्तर्निहित SQLite दत्तांशप्रकारः किमपि न भवतु ।
def convert_point(s): x, y = map(float, s.split(b";")) return Point(x, y)
अस्माभिः इदानीं वक्तव्यम्sqlite3
यदा तया दत्तं SQLite मूल्यं परिवर्तयितव्यम् । एतत् दत्तांशकोशेन सह सम्बद्धे सति भवति, यत्...detect_types इति इति इति इति इति इति इति इति इतिपैरामीटर् ofसंयुज्() . तत्र त्रयः विकल्पाः सन्ति- १.
अन्तर्निहित: सेट्detect_types इति इति इति इति इति इति इति इति इतिइत्यस्मैPARSE_DECLTYPES इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः इति ग्रन्थः
स्पष्टम् : सेट्detect_types इति इति इति इति इति इति इति इति इतिइत्यस्मैPARSE_COLNAMES इति इति इति इति इति इति
उभयम् : सेट्detect_types इति इति इति इति इति इति इति इति इतिइत्यस्मैsqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES
. घोषितप्रकारस्य अपेक्षया स्तम्भनामानां प्राधान्यं भवति ।
निम्नलिखित उदाहरणं अन्तर्निहितं स्पष्टं च उपायं दर्शयति ।
class Point: def __init__(self, x, y): self.x, self.y = x, y def __repr__(self): return f"Point({self.x}, {self.y})" def adapt_point(point): return f"{point.x};{point.y}" def convert_point(s): x, y = list(map(float, s.split(b";"))) return Point(x, y) # Register the adapter and converter sqlite3.register_adapter(Point, adapt_point) sqlite3.register_converter("point", convert_point) # 1) Parse using declared types p = Point(4.0, -3.2) con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES) cur = con.execute("CREATE TABLE test(p point)") cur.execute("INSERT INTO test(p) VALUES(?)", (p,)) cur.execute("SELECT p FROM test") print("with declared types:", cur.fetchone()[0]) cur.close() con.close() # 2) Parse using column names con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_COLNAMES) cur = con.execute("CREATE TABLE test(p)") cur.execute("INSERT INTO test(p) VALUES(?)", (p,)) cur.execute('SELECT p AS "p [point]" FROM test') print("with column names:", cur.fetchone()[0]) cur.close() con.close()
अस्मिन् खण्डे सामान्य एडाप्टर्-परिवर्तकानां व्यञ्जनानि दर्शितानि सन्ति ।
import datetime import sqlite3 def adapt_date_iso(val): """Adapt datetime.date to ISO 8601 date.""" return val.isoformat() def adapt_datetime_iso(val): """Adapt datetime.datetime to timezone-naive ISO 8601 date.""" return val.isoformat() def adapt_datetime_epoch(val): """Adapt datetime.datetime to Unix timestamp.""" return int(val.timestamp()) sqlite3.register_adapter(datetime.date, adapt_date_iso) sqlite3.register_adapter(datetime.datetime, adapt_datetime_iso) sqlite3.register_adapter(datetime.datetime, adapt_datetime_epoch) def convert_date(val): """Convert ISO 8601 date to datetime.date object.""" return datetime.date.fromisoformat(val.decode()) def convert_datetime(val): """Convert ISO 8601 datetime to datetime.datetime object.""" return datetime.datetime.fromisoformat(val.decode()) def convert_timestamp(val): """Convert Unix epoch timestamp to datetime.datetime object.""" return datetime.datetime.fromtimestamp(int(val)) sqlite3.register_converter("date", convert_date) sqlite3.register_converter("datetime", convert_datetime) sqlite3.register_converter("timestamp", convert_timestamp)
प्रयुज्यप्रभज्(), execute many() ९., तथानिष्पादनस्क्रिप्ट्() २.विधयः इतिसंबन्धःclass, भवतः कोडः अधिकसंक्षेपेण लिखितुं शक्यते यतोहि भवता (प्रायः अनावश्यकम्)कर्सर विषयान् स्पष्टतया । अपि तु द...कर्सर ऑब्जेक्ट्स् अन्तर्निहितरूपेण निर्मिताः भवन्ति तथा च एते शॉर्टकट् मेथड्स् कर्सर ऑब्जेक्ट्स् प्रत्यागच्छन्ति । एवं भवन्तः aSELECT
statement and iterate over it directly using only one call on theसंबन्धःवस्तु।
# Create and fill the table. con = sqlite3.connect(":memory:") con.execute("CREATE TABLE lang(name, first_appeared)") data = [ ("C++", 1985), ("Objective-C", 1984), ] con.executemany("INSERT INTO lang(name, first_appeared) VALUES(?, ?)", data) # Print the table contents for row in con.execute("SELECT name, first_appeared FROM lang"): print(row) print("I just deleted", con.execute("DELETE FROM lang").rowcount, "rows") # close() is not a shortcut method and it's not called automatically; # the connection object should be closed manually con.close()
एकःसंबन्धः object इत्यस्य उपयोगः सन्दर्भप्रबन्धकस्य रूपेण कर्तुं शक्यते यत् सन्दर्भप्रबन्धकस्य शरीरात् निर्गत्य स्वयमेव मुक्तव्यवहारं प्रतिबद्धं करोति वा पुनः रोल करोति वा । यदि शरीरस्यसह कथनं अपवादं विना समाप्तं भवति, व्यवहारः प्रतिबद्धः भवति । यदि एतत् कमिटं विफलं भवति, यदि वा शरीरस्यwith
statement अनक्राट् अपवादं उत्थापयति, व्यवहारः पुनः रोल भवति । यदिस्वप्रतिबद्धताअस्तिFalse
, नूतनः व्यवहारः प्रतिबद्धः अथवा पुनः रोल कृत्वा अन्तर्निहितरूपेण उद्घाटितः भवति ।
यदि शरीरात् निर्गत्य मुक्तव्यापारः न भवतिwith
कथनम्, यदि वास्वप्रतिबद्धताअस्तिTrue
, सन्दर्भप्रबन्धकः किमपि न करोति ।
टीका
सन्दर्भप्रबन्धकः न अन्तर्निहितरूपेण नूतनं व्यवहारं उद्घाटयति न च संयोजनं बन्दं करोति । यदि भवन्तः समापनसन्दर्भप्रबन्धकस्य आवश्यकतां अनुभवन्ति तर्हि उपयोगं कर्तुं विचारयन्तुcontextlib.closing () ९..
con = sqlite3.connect(":memory:") con.execute("CREATE TABLE lang(id INTEGER PRIMARY KEY, name VARCHAR UNIQUE)") # Successful, con.commit() is called automatically afterwards with con: con.execute("INSERT INTO lang(name) VALUES(?)", ("Python",)) # con.rollback() is called after the with block finishes with an exception, # the exception is still raised and must be caught try: with con: con.execute("INSERT INTO lang(name) VALUES(?)", ("Python",)) except sqlite3.IntegrityError: print("couldn't add Python twice") # Connection object used as context manager only commits or rollbacks transactions, # so the connection object should be closed manually con.close()
केचन उपयोगिनो URI युक्तयः सन्ति :
केवलं पठनीयविधाने एकं दत्तांशकोशं उद्घाटयन्तु:
>>>
>>> con = sqlite3.connect("file:tutorial.db?mode=ro", uri=True) >>> con.execute("CREATE TABLE readonly(data)") Traceback (most recent call last): OperationalError: attempt to write a readonly database
यदि पूर्वमेव नास्ति तर्हि नूतनं दत्तांशकोशसञ्चिकां अन्तर्निहितरूपेण न रचयन्तु; उत्थापयिष्यतिOperationalError इति इति इति इति इति इति इति इति इति इतियदि नूतनसञ्चिकां निर्मातुं असमर्थः अस्ति:
>>>
>>> con = sqlite3.connect("file:nosuchdb.db?mode=rw", uri=True) Traceback (most recent call last): OperationalError: unable to open database file
एकं साझां नामकं स्मृति-अन्तर्गतं दत्तांशकोशं रचयन्तु:
db = "file:mem1?mode=memory&cache=shared" con1 = sqlite3.connect(db, uri=True) con2 = sqlite3.connect(db, uri=True) with con1: con1.execute("CREATE TABLE shared(data)") con1.execute("INSERT INTO shared VALUES(28)") res = con2.execute("SELECT data FROM shared") assert res.fetchone() == (28,) con1.close() con2.close()
अस्य विशेषतायाः विषये अधिका सूचना, यत्र मापदण्डानां सूची अपि अस्ति, तत्र प्राप्यतेSQLite URI दस्तावेजीकरणम्.
पूर्वनिर्धारितरूपेण,sqlite3
प्रत्येकं पङ्क्तिं प्रतिनिधित्वं करोति यथा कतुपले . यदि कtuple
भवतः आवश्यकतानुसारं न भवति, भवन्तः उपयोक्तुं शक्नुवन्तिsqlite3.पङ्क्तिःवर्गः प्रथा वापङ्क्ति_कारखाना.
यावद्row_factory
विशेषणरूपेण विद्यते उभयत्र उपरिकर्सरतथासंबन्धः, सेट् कर्तुं शस्यतेसंयोजन.पङ्क्ति_कारखाना, अतः संयोजनात् निर्मिताः सर्वे कर्सराः समानपङ्क्तिकारखानस्य उपयोगं करिष्यन्ति ।
Row
स्तम्भानां कृते अनुक्रमितं तथा केस-असंवेदनशीलं नामकृतं प्रवेशं प्रदाति, यत्र न्यूनतमस्मृति-उपरिभारः, कार्यक्षम-प्रभावः च atuple
. प्रयोगायRow
पङ्क्तिकारखानारूपेण, तत् नियुक्तं कुर्वन्तुrow_factory
गुण:
>>>
>>> con = sqlite3.connect(":memory:") >>> con.row_factory = sqlite3.Row
इदानीं प्रश्नाः पुनः आगच्छन्तिRow
विषयाः : १.
>>>
>>> res = con.execute("SELECT 'Earth' AS name, 6378 AS radius") >>> row = res.fetchone() >>> row.keys() ['name', 'radius'] >>> row[0] # Access by index. 'Earth' >>> row["name"] # Access by name. 'Earth' >>> row["RADIUS"] # Column names are case-insensitive. 6378 >>> con.close()
टीका
दFROM
वाक्यं लोपयितुं शक्यतेSELECT
कथनम्, यथा पूर्वोदाहरणम् । एतादृशेषु सन्दर्भेषु SQLite एकां पङ्क्तिं अभिव्यक्तैः परिभाषितैः स्तम्भैः सह प्रत्यागच्छति, यथा literals, दत्तैः उपनामभिः सहexpr AS alias
.
भवन्तः कस्टम् रचयितुं शक्नुवन्तिपङ्क्ति_कारखानायत् प्रत्येकं पङ्क्तिं a इति प्रत्यागच्छतिdict, मूल्येषु मैप् कृत्वा स्तम्भनामानि सन्ति:
def dict_factory(cursor, row): fields = [column[0] for column in cursor.description] return {key: value for key, value in zip(fields, row)}
तस्य उपयोगेन इदानीं प्रश्नाः adict
instead of atuple
:
>>>
>>> con = sqlite3.connect(":memory:") >>> con.row_factory = dict_factory >>> for row in con.execute("SELECT 1 AS a, 2 AS b"): ... print(row) {'a': 1, 'b': 2} >>> con.close()
निम्नलिखित पङ्क्तिकारखाना कइति तुपले:
from collections import namedtuple def namedtuple_factory(cursor, row): fields = [column[0] for column in cursor.description] cls = namedtuple("Row", fields) return cls._make(row)
namedtuple_factory()
निम्नलिखितरूपेण उपयोक्तुं शक्यते ।
>>>
>>> con = sqlite3.connect(":memory:") >>> con.row_factory = namedtuple_factory >>> cur = con.execute("SELECT 1 AS a, 2 AS b") >>> row = cur.fetchone() >>> row Row(a=1, b=2) >>> row[0] # Indexed access. 1 >>> row.b # Attribute access. 2 >>> con.close()
केनचित् समायोजनेन उपर्युक्तं नुस्खं कदत्तांशवर्गः, अन्यः कोऽपि रूढिवर्गः वा, कनामकृत्तुपलम्.
पूर्वनिर्धारितरूपेण,sqlite3
प्रयुङ्क्तेस्त्रSQLite मूल्यानां अनुकूलनार्थंTEXT
दत्तांशप्रकारः । इदं UTF-8 एन्कोड् कृतस्य पाठस्य कृते सम्यक् कार्यं करोति, परन्तु अन्येषां एन्कोडिंग् कृते अपि च अमान्य UTF-8 कृते विफलं भवितुम् अर्हति । भवन्तः कस्टम् इत्यस्य उपयोगं कर्तुं शक्नुवन्तिपाठ_कारखानातादृशप्रकरणानाम् निबन्धनार्थम् ।
SQLite इत्यस्य कारणात्लचीला टङ्कनम्, इत्यनेन सह सारणीस्तम्भानां सम्मुखीकरणं न असामान्यम्TEXT
अ-UTF-8 एन्कोडिंग् युक्तः दत्तांशप्रकारः, अथवा मनमाना दत्तांशः अपि । प्रदर्शयितुं, अस्माकं कृते ISO-8859-2 (Latin-2) एन्कोडेड् पाठयुक्तः दत्तांशकोशः अस्ति इति कल्पयामः, उदाहरणार्थं चेक्-आङ्ग्लभाषायाः शब्दकोशप्रविष्टीनां सारणी । अधुना अस्माकं कसंबन्धःक्षणcon
अस्मिन् दत्तांशकोशेन सह सम्बद्धाः, वयम् एतस्य उपयोगेन Latin-2 एन्कोड् कृतं पाठं डिकोड् कर्तुं शक्नुमःपाठ_कारखाना:
con.text_factory = lambda data: str(data, encoding="latin2")
अमान्य UTF-8 अथवा मनमाना दत्तांशस्य कृते संगृहीतस्य कृतेTEXT
table columns, भवन्तः निम्नलिखित तकनीकस्य उपयोगं कर्तुं शक्नुवन्ति, यत् उधारं गृहीतम् अस्तियूनिकोड HOWTO:
con.text_factory = lambda data: str(data, errors="surrogateescape")
टीका
दsqlite3
module API प्रतिनिधीनां स्ट्रिंग् समर्थयति न ।
अपि द्रष्टव्यम्
sqlite3
दत्तांशकोशव्यवहाराः उद्घाटिताः, बन्दाः च भवन्ति वा, कदा, कथं च इति नियन्त्रणस्य बहुविधाः पद्धतयः प्रदाति ।autocommit विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्अनुशंस्यते, यदाisolation_level विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्पूर्व-पायथन् ३.१२ व्यवहारं धारयति ।
autocommit
गुणव्यवहारव्यवहारस्य नियन्त्रणस्य अनुशंसितः मार्गः अस्ति यत्...संयोजन।स्वयम्प्रतिबद्धताattribute, यत् प्राधान्येन सेट् कर्तव्यम्स्वप्रतिबद्धतापैरामीटर् ofसंयुज्().
सेट् कर्तुं सूचितम् अस्तिस्वप्रतिबद्धताइत्यस्मैFalse
, यस्य तात्पर्यम्पीईपी २४९ -अनुरूप लेनदेन नियन्त्रण। अस्य अर्थः- १.
sqlite3
व्यवहारः सर्वदा उद्घाटितः इति सुनिश्चितं करोति, अतःसंयुज्(), Connection.commit() 1.1. 1.1. 1.1. 1.1., तथाकनेक्शन.रोलबैक () .अन्तर्निहितरूपेण नूतनं व्यवहारं उद्घाटयिष्यति (लम्बितस्य बन्दीकरणानन्तरं तत्क्षणमेव, उत्तरद्वयस्य कृते)।sqlite3
प्रयुङ्क्तेBEGIN DEFERRED
व्यवहारं उद्घाटयति समये कथनानि।
व्यवहाराः स्पष्टतया उपयोगेन कर्तव्याःcommit()
.
व्यवहाराः स्पष्टतया उपयोगेन पुनः रोल करणीयाःrollback()
.
यदि दत्तांशकोशः अस्ति तर्हि अन्तर्निहितं रोलबैक् क्रियतेपिधानं करोतु()-ed लम्बितपरिवर्तनैः सह।
दृढःस्वप्रतिबद्धताइत्यस्मैTrue
SQLite इत्यस्य सक्षमीकरणायस्वतःप्रतिबद्धताविधिः . अस्मिन् गुणे .Connection.commit() 1.1. 1.1. 1.1. 1.1.तथाकनेक्शन.रोलबैक () . न प्रभावः भवति। ध्यानं कुर्वन्तु यत् SQLite इत्यस्य autocommit मोड् इत्यस्मात् भिन्नः अस्तिपीईपी २४९-अनुरूपःसंयोजन।स्वयम्प्रतिबद्धता गुण; उपयुञ्जताम्संबन्धः.व्यवहारे_निम्नस्तरीयं SQLite स्वप्रतिबद्धविधिं पृच्छितुं ।
दृढःस्वप्रतिबद्धताइत्यस्मैLEGACY_TRANSACTION_CONTROLव्यवहारनियन्त्रणव्यवहारं त्यक्तुंसंयोजन।पृथक्करण_स्तर गुण। पश्यतुisolation_level विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्अधिकविवरणार्थं।
isolation_level
गुणटीका
व्यवहारनियन्त्रणस्य अनुशंसितः मार्गः मार्गेण अस्तिस्वप्रतिबद्धता गुण। पश्यतुautocommit विशेषतायाः माध्यमेन लेनदेननियन्त्रणम्.
यदिसंयोजन।स्वयम्प्रतिबद्धताइति सेट् भवतिLEGACY_TRANSACTION_CONTROL(पूर्वनिर्धारितं), व्यवहारव्यवहारस्य नियन्त्रणं भवतिसंयोजन।पृथक्करण_स्तर गुण। अन्यथा,isolation_level
न कोऽपि प्रभावः ।
यदि संयोगविशेषणम्पृथक्करण_स्तरइति नNone
, नूतनाः व्यवहाराः पूर्वं अन्तर्निहितरूपेण उद्घाटिताः भवन्तिप्रभज्()तथाexecute many() ९.निष्पादयतिINSERT
, UPDATE
, DELETE
, वाREPLACE
कथनानि; अन्येषां कथनानां कृते, कोऽपि अन्तर्निहितव्यवहारनियन्त्रणं न क्रियते । प्रयोगं कुर्वन्तुप्रविश्()तथारोलबैक () २. क्रमशः लम्बितव्यवहारं प्रतिबद्धं रोलबैकं च कर्तुं पद्धतयः। भवन्तः अन्तर्निहितं चिन्वितुं शक्नुवन्तिSQLite लेनदेन व्यवहार— किं किं प्रकारस्य इति यावत्BEGIN
कथनानिsqlite3
अन्तर्निहितरूपेण निष्पादयति – via theपृथक्करण_स्तरगुण।
यदिपृथक्करण_स्तरइति सेट् भवतिNone
, कोऽपि व्यवहारः अन्तर्निहितरूपेण सर्वथा उद्घाटितः नास्ति । एतेन अन्तर्निहितं SQLite पुस्तकालयं त्यजतिस्वतःप्रतिबद्धताविधिः , परन्तु उपयोक्तारं स्पष्ट-SQL-कथनानां उपयोगेन स्वस्य लेनदेन-नियन्त्रणं कर्तुं अपि अनुमतिं ददाति । अन्तर्निहितं SQLite पुस्तकालयस्य स्वप्रतिबद्धविधिः इत्यस्य उपयोगेन पृच्छितुं शक्यतेव्यवहारे_गुण।
दनिष्पादनस्क्रिप्ट्() २.method अन्तर्निहितरूपेण दत्तस्य SQL स्क्रिप्टस्य निष्पादनात् पूर्वं किमपि लम्बितव्यवहारं करोति, मूल्यस्य परवाहं विनापृथक्करण_स्तर.
3.6 संस्करणे परिवर्तितम्:sqlite3
DDL कथनानां पूर्वं अन्तर्निहितरूपेण मुक्तव्यवहारं कर्तुं प्रयुक्तम् । न पुनः एतत् ।
संस्करणे ३.१२ परिवर्तितम्: व्यवहारनियन्त्रणस्य अनुशंसितः मार्गः अधुना मार्गेण अस्तिस्वप्रतिबद्धतागुण।