English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل SQLite الأساسي

دليل متقدم SQLite

واجهة برمجة تطبيقات SQLite

Python في SQLite

تثبيت

يمكن استخدام مكتبة sqlite3 لتكامل SQLite مع Python. كتبت مكتبة sqlite3 من قبل Gerhard Haring. يقدم هذا المكتبة واجهة SQL متوافقة مع معيار DB-API 2.0 الذي وصفته PEP 249. لا تحتاج إلى تثبيت هذا المكتبة بشكل منفصل، لأنها مدمجة بشكل افتراضي في إصدارات Python 2.5.x وما فوق.

للاستخدام مكتبة sqlite3، يجب عليك أولاً إنشاء كائن الاتصال الذي يمثل قاعدة البيانات، ثم يمكنك اختيار إنشاء كائن سطر للتعامل مع جميع تعليمات SQL.

API مكتبة Python sqlite3

هذه هي البرامج المهمة في مكتبة sqlite3، التي يمكن أن تلبي احتياجاتك في استخدام قاعدة بيانات SQLite في برامج Python. إذا كنت بحاجة إلى مزيد من التفاصيل، يرجى الرجوع إلى وثائق مكتبة sqlite3 الرسمية.

رقمAPI & وصف
1sqlite3.connect(database [,timeout ,other optional arguments])

يفتح هذا API اتصالاً إلى ملف قاعدة البيانات SQLite database. يمكنك استخدام ":memory:" لفتح اتصال إلى قاعدة البيانات في ذاكرة الوصول العشوائي بدلاً من فتحه على القرص الصلب. إذا تم فتح قاعدة البيانات بنجاح، يتم إرجاع كائن الاتصال.

عندما يتم الوصول إلى قاعدة بيانات SQLite من خلال عدة اتصالات، وإذا قام أحد الاتصالات بتعديل قاعدة البيانات، يتم تأمين قاعدة البيانات حتى يتم تقديم العملية. يُشير متغير timeout إلى فترة الانتظار التي تنتظر الاتصال حتى يتم تأمين الطلب، حتى يحدث انقطاع غير متوقع في الاتصال. يتم تعيين متغير timeout بشكل افتراضي إلى 5.0 (5 ثانية).

إذا لم يكن اسم قاعدة البيانات المقدمة filename موجودًا، فإن هذا الاستدعاء سيقوم بإنشاء قاعدة بيانات. إذا لم تكن ترغب في إنشاء قاعدة بيانات في الدليل الحالي، يمكنك تحديد اسم ملف يحتوي على مسار، حيث يمكنك إنشاء قاعدة بيانات في أي مكان.

2connection.cursor([cursorClass])

يقوم هذا البرنامج بإنشاء cursor،ستستخدم في برمجة قواعد البيانات في Python. تقبل هذه الطريقة معامل اختياري واحد cursorClass. إذا تم تقديم هذا المعامل، يجب أن يكون هذا المعامل فئة cursor مخصصة تمت ت扩展ها من sqlite3.Cursor.

3cursor.execute(sql[, optional parameters])

يقوم هذا البرنامج بتنفيذ تعليمات SQL. يمكن ت 参数يز هذه التعليمات SQL (أي باستخدام محددين بدلاً من نص SQL). يدعم مodule sqlite3 نوعين من المحددين: علامة الاستفهام و المحددين المسميين (نمط التسمية).

مثلاً: cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql[, optional parameters])

هذا البرنامج هو طريقة مختصرة لطريقة المقدمة من قبل علامة التتبع (cursor) المقدمة، حيث يتم إنشاء علامة التتبع المتوسطة بواسطة طريقة cursor، ثم يتم استدعاء طريقة execute للعلامة التتبع المقدمة كمعامل.

5cursor.executemany(sql, seq_of_parameters)

يقوم هذا البرنامج بتنفيذ أمر SQL لكل من المعلمات أو المappings في seq_of_parameters.

6connection.executemany(sql[, parameters])

هذا البرنامج هو طريقة مختصرة لإنشاء علامة التتبع المتوسطة التي يتم إنشاؤها بواسطة طريقة cursor، ثم يتم استدعاء طريقة executemany للعلامة التتبع المقدمة كمعامل.

7cursor.executescript(sql_script)

بمجرد استقبال هذا البرنامج من السكربت، سيتم تنفيذ عدة تعليمات SQL. أولاً، سيتم تنفيذ تعليمات COMMIT، ثم ستنفذ السكربت SQL المقدمة كمعامل. يجب فصل جميع تعليمات SQL بفاصلة الوصل ;.

8connection.executescript(sql_script)

هذه العملية هي وسيلة مختصرة لإنشاء عمودي منفرد من العناصر المختلفة التي يتم إنشاؤها بواسطة طريقة cursor، ثم يتم استدعاء طريقة executescript للمسار المحدد.

9connection.total_changes()

تقوم هذه العملية بتحديد عدد الصفوف التي تم تعديلها أو إدراجها أو حذفها في قاعدة البيانات منذ فتح اتصال قاعدة البيانات.

10connection.commit()

تقوم هذه الطريقة بتقديم المعاملة الحالية. إذا لم تكن قد استدعيت هذه الطريقة، فإن أي إجراء قمت به منذ آخر استدعاء لطريقة commit() لن يكون مرئيًا لاتصالات قاعدة البيانات الأخرى.

11connection.rollback()

تقوم هذه الطريقة بالتراجع عن التغييرات التي تم إجراؤها في قاعدة البيانات منذ آخر استدعاء لطريقة commit().

12connection.close()

تقوم هذه الطريقة بإغلاق اتصال قاعدة البيانات. يرجى ملاحظة أن هذا لن يطلق تلقائيًا commit(). إذا لم تكن قد استدعيت طريقة commit() من قبل، فإن جميع التغييرات التي قمت بها ستت丢失!

13cursor.fetchone()

تقوم هذه الطريقة بحصول على الصف التالي في مجموعة النتائج للاستعلام، وتقوم بتقديم سلسلة واحدة. إذا لم يكن هناك بيانات متاحة أخرى، يتم تقديم None.

14cursor.fetchmany([size=cursor.arraysize])

يحصل هذا الطريقة على مجموعة الصفوف التالية في مجموعة النتائج للاستعلام، ويقوم بتقديم قائمة. إذا لم يكن هناك صفوف متاحة أخرى، يتم تقديم قائمة فارغة. تحاول هذه الطريقة الحصول على أكبر عدد ممكن من الصفوف المحددة من قبل المعامل size.

15cursor.fetchall()

يحصل هذا البرنامج على جميع الصفوف (الباقية) في مجموعة النتائج للاستعلام، ويقوم بتقديم قائمة. إذا لم يكن هناك صفوف متاحة، يتم تقديم قائمة فارغة.

اتصال بقاعدة البيانات

يظهر الكود التالي كيفية الاتصال بقاعدة بيانات موجودة. إذا لم تكن قاعدة البيانات موجودة، فإنها سيتم إنشاؤها، وستعاد ملف قاعدة البيانات.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully"

في هذا المكان، يمكنك أيضًا نسخ اسم قاعدة البيانات إلى اسم محدد :memory:بهذا، سيتم إنشاء قاعدة البيانات في ذاكرة الوصول العشوائي. دعونا الآن نن�行 البرنامج المذكور أعلاه، ونقوم بإنشاء قاعدة البيانات الخاصة بنا في الدليل الحالي test.dbيمكنك تغيير المسار حسب الحاجة. احفظ الكود المذكور في ملف sqlite.py وابدأ تنفيذه كما هو موضح أدناه. إذا تم إنشاء قاعدة البيانات بنجاح، سيتم عرض الرسالة التالية:

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

创建表

下面的 Python 代码段将用于在先前创建的数据库中创建一个表:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully"
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "Table created successfully"
conn.commit()
conn.close()

上述程序执行时,它会在 test.db 中创建 COMPANY 表,并显示下面所示的消息:

نجح في فتح قاعدة البيانات
Table created successfully

INSERT 操作

下面的 Python 程序显示了如何在上面创建的 COMPANY 表中创建记录:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) ")
      VALUES (1, 'Paul', 32, 'California', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) ")
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) ")
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) ")
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
conn.commit()
print "Records created successfully"
conn.close()

上述程序执行时,它会在 COMPANY 表中创建给定记录,并会显示以下两行:

نجح في فتح قاعدة البيانات
Records created successfully

SELECT 操作

下面的 Python 程序显示了如何从前面创建的 COMPANY 表中获取并显示记录:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم توليد النتائج التالية:

نجح في فتح قاعدة البيانات
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0
تم إتمام العمل بنجاح

عملية UPDATE

الPython التالي يوضح كيفية استخدام جملة UPDATE لإعداد أي سجل، ثم استخراج وتعديل السجلات المعدلة من جدول COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم توليد النتائج التالية:

نجح في فتح قاعدة البيانات
عدد السطور المعدلة : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0
تم إتمام العمل بنجاح

عملية DELETE

الPython التالي يوضح كيفية استخدام جملة DELETE لإزالة أي سجل، ثم استخراج وتعديل السجلات المتبقية من جدول COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

عندما يتم تنفيذ البرنامج المذكور أعلاه، سيتم توليد النتائج التالية:

نجح في فتح قاعدة البيانات
عدد السطور المزالة : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0
تم إتمام العمل بنجاح