SQLITE3-رابط DB-API 2. 0 برای پایگاه داده SQLite

ساخت وبلاگ

SQLite یک کتابخانه C است که یک پایگاه داده مبتنی بر دیسک سبک را ارائه می دهد که نیازی به فرآیند سرور جداگانه ندارد و امکان دسترسی به پایگاه داده را با استفاده از یک نوع غیر استاندارد از زبان پرس و جو SQL فراهم می کند. برخی از برنامه ها می توانند از SQLITE برای ذخیره سازی داده های داخلی استفاده کنند. همچنین می توان یک برنامه را با استفاده از SQLITE نمونه اولیه کرد و سپس کد را به یک پایگاه داده بزرگتر مانند PostgreSQL یا Oracle منتقل کرد.

ماژول SQLite3 توسط گرهارد هورینگ نوشته شده است. این یک رابط SQL مطابق با مشخصات DB-API 2. 0 که توسط PEP 249 شرح داده شده است ، ارائه می دهد و به SQLite 3. 7. 15 یا جدیدتر نیاز دارد.

این سند شامل چهار بخش اصلی است:

آموزش نحوه استفاده از ماژول SQLite3 را آموزش می دهد.

مرجع کلاس ها و توابعی را که این ماژول تعریف می کند ، توصیف می کند.

نحوه راهنمایی جزئیات نحوه انجام کارهای خاص را راهنمایی می کند.

توضیح پیشینه عمیق در مورد کنترل معاملات ارائه می دهد.

صفحه وب SQLite ؛مستندات نحو و انواع داده های موجود را برای گویش پشتیبانی شده SQL توصیف می کند.

آموزش ، مرجع و نمونه هایی برای یادگیری نحو SQL.

PEP 249 - مشخصات API پایگاه داده 2. 0

پپ نوشته شده توسط مارک آندره لمبورگ.

آموزش

در این آموزش ، شما با استفاده از قابلیت های اساسی SQLITE3 ، یک پایگاه داده از فیلم های Monty Python ایجاد خواهید کرد. این یک درک اساسی از مفاهیم پایگاه داده ، از جمله نشانگرها و معاملات را فرض می کند.

ابتدا باید یک پایگاه داده جدید ایجاد کنیم و یک اتصال پایگاه داده را باز کنیم تا SQLite3 بتواند با آن کار کند. برای ایجاد اتصال به آموزش پایگاه داده. db در فهرست کار فعلی ، با sqlite3. connect () تماس بگیرید ، در صورت عدم وجود آن ، به طور ضمنی آن را ایجاد کنید:

CON Object Connection Contrence اتصال به پایگاه داده روی دیسک را نشان می دهد.

به منظور اجرای اظهارات SQL و نتایج واکشی از نمایش داده های SQL ، ما باید از یک مکان نما پایگاه داده استفاده کنیم. برای ایجاد مکان نما با con. cursor () تماس بگیرید:

اکنون که یک اتصال به پایگاه داده و یک مکان نما را در اختیار داریم ، می توانیم یک فیلم جدول پایگاه داده با ستون برای عنوان ، سال انتشار و نمره بررسی ایجاد کنیم. برای سادگی ، ما فقط می توانیم از نام ستون در اعلامیه جدول استفاده کنیم - به لطف ویژگی تایپ انعطاف پذیر SQLite ، مشخص کردن انواع داده ها اختیاری است. با فراخوانی cur. execute (.) بیانیه جدول ایجاد را اجرا کنید:

ما می توانیم تأیید کنیم که جدول جدید با پرس و جو از جدول SQLite_master ساخته شده در SQLite ایجاد شده است ، که اکنون باید حاوی ورودی برای تعریف جدول فیلم باشد (برای جزئیات بیشتر به جدول طرحواره مراجعه کنید). با فراخوانی Cur. Execute (.) ، آن پرس و جو را اجرا کنید ، نتیجه را به Res اختصاص دهید و با res. fetchone () تماس بگیرید تا ردیف حاصل را بدست آورید:

ما می توانیم ببینیم که جدول ایجاد شده است ، زیرا پرس و جو یک Tuple حاوی نام جدول را برمی گرداند. اگر از SQLite_master برای یک اسپم جدول غیر موجود پرس و جو کنیم ، res. fetchone () هیچ یک را برمی گرداند:

اکنون ، دو ردیف داده های تهیه شده به عنوان SQL Literals را با اجرای یک بیانیه درج ، یک بار دیگر با فراخوانی Cur. Execute (.) اضافه کنید:

بیانیه درج به طور ضمنی معامله ای را باز می کند ، که باید قبل از ذخیره تغییرات در پایگاه داده انجام شود (برای جزئیات بیشتر به کنترل معاملات مراجعه کنید). برای انجام معامله با con.commit () در مورد موضوع اتصال تماس بگیرید:

ما می توانیم تأیید کنیم که داده ها با اجرای یک پرس و جو انتخابی به درستی درج شده اند. برای اختصاص نتیجه به Res ، از Cur. Execute () در حال حاضر آشنا استفاده کنید و با Res. Fetchall () تماس بگیرید تا همه ردیف های حاصل را برگردانید:

نتیجه لیستی از دو Tuple S ، یک در هر ردیف است که هر یک حاوی مقدار نمره آن ردیف است.

اکنون ، با فراخوانی Cur. Execteemany (.) سه ردیف دیگر را وارد کنید:

توجه کنید که ؟از متغیرها برای اتصال داده ها به پرس و جو استفاده می شود. برای جلوگیری از حملات تزریق SQL ، همیشه به جای قالب بندی رشته برای اتصال مقادیر پایتون به بیانیه های SQL استفاده کنید (به نحوه استفاده از متغیرها برای اتصال مقادیر در نمایش داده های SQL برای اطلاعات بیشتر مراجعه کنید).

ما می توانیم تأیید کنیم که ردیف های جدید با اجرای یک پرس و جو انتخابی درج شده اند ، این بار در مورد نتایج پرس و جو تکرار می شود:

هر ردیف یک Tuple دو ماده ای از (سال ، عنوان) است که ستون های انتخاب شده در پرس و جو را مطابقت می دهد.

سرانجام ، تأیید کنید که پایگاه داده با فراخوانی con. close () برای بستن اتصال موجود ، باز کردن یک مورد جدید ، ایجاد یک مکان نما جدید ، ایجاد یک مکان نما ، سپس پرس و جو از پایگاه داده ، روی دیسک نوشته شده است:

اکنون شما یک پایگاه داده SQLite با استفاده از ماژول SQLite3 ایجاد کرده اید ، داده ها را درج کرده و مقادیر آن را به روش های مختلفی بازیابی کرده اید.

چگونه به راهنمایی برای خواندن بیشتر:

  • نحوه استفاده از صاحبخانه ها برای اتصال مقادیر در نمایش داده های SQL

  • نحوه تطبیق انواع پایتون سفارشی با مقادیر sqlite

  • نحوه تبدیل مقادیر SQLite به انواع پایتون سفارشی

  • نحوه استفاده از مدیر زمینه اتصال

  • نحوه ایجاد و استفاده از کارخانه های ردیف

توضیح برای پیشینه عمیق در مورد کنترل معامله.

ارجاع¶

توابع ماژول ¶

sqlite3. اتصال (پایگاه داده ، زمان بندی = 5. 0 ، detect_types = 0 ، iSolation_Level = 'deferred' ، check_same_thread = درست ، کارخانه = sqlite3. cached_statements = 128 ، uri = false) ¶

اتصال به یک پایگاه داده SQLITE را باز کنید.

پایگاه داده (شیء مانند مسیر)-مسیر پرونده پایگاه داده باز می شود. Pass ": Memory:" برای باز کردن اتصال به پایگاه داده ای که به جای دیسک در RAM است.

Timeout (شناور) - اگر پایگاه داده توسط یک اتصال دیگر قفل شده باشد ، چند ثانیه اتصال باید منتظر بماند. اگر اتصال دیگری معامله ای را برای تغییر پایگاه داده باز کند ، تا زمانی که این معامله انجام شود قفل می شود. پنج ثانیه پیش فرض.

DETECT_TYPES (INT) - کنترل کنید که آیا و چگونه انواع داده ها به طور بومی توسط SQLITE پشتیبانی نمی شوند ، با استفاده از مبدل های ثبت شده در Register_Converter () به انواع پایتون تبدیل می شوند. آن را روی هر ترکیب (با استفاده از | ، bitwise یا) از parse_decltypes و parse_colnames تنظیم کنید تا این امر را فعال کنید. در صورت تنظیم هر دو پرچم ، نام ستون ها بر انواع اعلام شده تقدم می یابد. انواع را نمی توان برای زمینه های تولید شده (به عنوان مثال حداکثر (داده)) تشخیص داد ، حتی اگر پارامتر DETECT_TYPES تنظیم شود. در عوض STR بازگردانده می شود. به طور پیش فرض (0) ، تشخیص نوع غیرفعال است.

ISOLATION_LEVEL (STR | NO) - ISOLATION_LEVEL اتصال ، کنترل اینکه آیا و چگونه معاملات به طور ضمنی افتتاح می شوند. می تواند "معوق" (پیش فرض) ، "منحصر به فرد" یا "فوری" باشد. یا هیچ یک برای غیرفعال کردن معاملات به طور ضمنی. برای اطلاعات بیشتر به کنترل معاملات مراجعه کنید.

check_same_thread (bool) - اگر درست (پیش فرض) باشد ، فقط موضوع ایجاد ممکن است از اتصال استفاده کند. اگر نادرست باشد ، ممکن است اتصال در چندین موضوع به اشتراک گذاشته شود. در این صورت ، برای جلوگیری از فساد داده ، عملیات نوشتن باید توسط کاربر سریال شود.

کارخانه (اتصال) - یک زیر کلاس سفارشی برای ایجاد اتصال ، اگر نه کلاس اتصال پیش فرض.

CACHED_STATEMENTS (INT) - تعداد اظهاراتی که SQLITE3 برای این اتصال باید در داخل حافظه پنهان شود ، تا از تجزیه سربار جلوگیری شود. به طور پیش فرض ، 128 بیانیه.

یک رویداد حسابرسی SQLITE3. Connect را با پایگاه داده استدلال ایجاد می کند.

یک رویداد حسابرسی SQLITE3. Connect/دسته را با Argument Connection_Handle ایجاد می کند.

جدید در نسخه 3. 4: پارامتر URI.

تغییر در نسخه 3. 7: پایگاه داده هم اکنون می تواند یک شیء مانند مسیر باشد ، نه تنها یک رشته.

جدید در نسخه 3. 10: رویداد حسابرسی SQLite3. Connect/Handle.

اگر به نظر می رسد عبارت رشته حاوی یک یا چند بیانیه کامل SQL است ، درست برگردید. هیچ تأیید نحوی یا تجزیه و تحلیل از هر نوع انجام نمی شود ، به غیر از بررسی اینکه هیچ لفظی رشته ای بدون بسته وجود ندارد و بیانیه توسط یک قسمت اصلی خاتمه می یابد.

این عملکرد ممکن است در حین ورودی خط فرمان مفید باشد تا مشخص شود که آیا متن وارد شده به نظر می رسد یک عبارت SQL کامل را تشکیل می دهد ، یا اینکه قبل از فراخوانی () به ورودی اضافی نیاز است.

sqlite3. Enable_callback_tracebacks (پرچم ، /)

ردیابی پاسخ به تماس را فعال یا غیرفعال کنید. به طور پیش فرض هیچ گونه ردیابی در کارکردهای تعریف شده توسط کاربر ، مصالح ، مبدل ها ، تماس های مجوز و غیره دریافت نخواهید کرد. پس از آن ، از تماس های برگشتی در Sys. Stderr Tracebacks دریافت خواهید کرد. برای غیرفعال کردن ویژگی دوباره از false استفاده کنید.

برای یک تجربه اشکال زدایی بهبود یافته ، یک کنترل کننده قلاب غیرقابل تصور را ثبت کنید:

برای تطبیق نوع پایتون در یک نوع SQLITE ، یک آداپتور قابل تماس را ثبت کنید. آداپتور با یک شیء پایتون از نوع به عنوان تنها آرگومان خود خوانده می شود و باید مقدار از نوع را که SQLite به طور بومی درک می کند ، برگرداند.

sqlite3. Register_Converter (typename ، مبدل ، /)

برای تبدیل اشیاء SQLite از نوع نوع به یک شیء پایتون از یک نوع خاص ، از مبدل قابل تماس استفاده کنید. مبدل برای تمام مقادیر SQLite از نوع نوع نوع فراخوانی شده است. این یک شی بایت منتقل می شود و باید یک شی از نوع پایتون مورد نظر را برگرداند. برای کسب اطلاعات در مورد نحوه عملکرد تشخیص نوع ، با پارامتر DETECT_TYPES CONNECT () مشورت کنید.

توجه: نام تایپ و نام نوع موجود در پرس و جو شما به صورت موردی مطابقت دارند.

ثابت ماژول

این مقدار پرچم را به پارامتر DETECT_TYPES از Connect () منتقل کنید تا با استفاده از نام نوع ، از نام ستون پرس و جو ، به عنوان کلید فرهنگ لغت مبدل ، یک عملکرد مبدل را جستجو کنید. نام نوع باید در براکت های مربع ([]) پیچیده شود.

این پرچم ممکن است با استفاده از parse_decltypes با استفاده از |(bitwise یا) اپراتور.

این مقدار پرچم را به پارامتر DETECT_TYPES CONNINCE () منتقل کنید تا با استفاده از انواع اعلام شده برای هر ستون ، یک تابع مبدل را جستجو کنید. با ایجاد جدول پایگاه داده ، انواع اعلام می شوند. SQLite3 با استفاده از اولین کلمه از نوع اعلام شده به عنوان کلید فرهنگ لغت مبدل ، یک تابع مبدل را جستجو می کند. مثلا:

این پرچم ممکن است با استفاده از parse_colnames با استفاده از |(bitwise یا) اپراتور.

sqlite3. SQLITE_OK ¶ SQLITE3. SQLITE_DENY ¶ SQLITE3. sqlite_ignore

پرچم هایی که باید توسط پروانه دهنده_ callback قابل بازگشت به آن برگردانده شوند ، به اتصال . set_authorizer () منتقل شدند تا نشان دهند که آیا:

دسترسی مجاز است (sqlite_ok) ،

عبارت SQL باید با یک خطا سقط شود (SQLITE_DENY)

ستون باید به عنوان یک مقدار تهی (sqlite_ignore) رفتار شود

ثابت است که سطح DB-API پشتیبانی شده را بیان می کند. مورد نیاز DB-API. رمزگذاری شده به "2. 0".

ثابت ثابت نوع قالب بندی نشانگر پارامتر که توسط ماژول SQLITE3 مورد انتظار است. مورد نیاز DB-API. رمزگذاری شده به "qmark".

سبک پارامتر DB-API نامگذاری شده نیز پشتیبانی می شود.

شماره نسخه کتابخانه SQLite Runtime به عنوان یک رشته.

شماره نسخه کتابخانه SQLite زمان اجرا به عنوان یک عدد صحیح از اعداد صحیح.

ثابت عدد صحیح مورد نیاز DB-API 2. 0 ، با بیان سطح ایمنی نخ ماژول SQLITE3 پشتیبانی می کند. این ویژگی بر اساس حالت پیش فرض موضوع تنظیم شده است که کتابخانه زیربنایی SQLite با آن گردآوری شده است. حالت های نخ SQLITE عبارتند از:

  1. تک رشته: در این حالت ، همه mutexes غیرفعال هستند و SQLITE برای استفاده بیش از یک موضوع به طور هم زمان ناامن است.

  2. چند رشته ای: در این حالت ، SQLite می تواند با اطمینان از چندین موضوع استفاده شود به شرط آنکه هیچ اتصال پایگاه داده ای به طور همزمان در دو یا چند موضوع استفاده نشود.

  3. سریال: در حالت سریالی ، SQLite می تواند با اطمینان از چندین موضوع بدون محدودیت استفاده شود.

نگاشتهای مربوط به حالت نخ SQLite تا سطح DB-API 2. 0 ThreadSafety به شرح زیر است:

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محسن زنجانچی بازدید : 65 تاريخ : چهارشنبه 9 فروردين 1402 ساعت: 22:54