This post is also available in: English (الإنجليزية)
Python Database API (واجهة برنامج التطبيق) هي واجهة قاعدة البيانات لبيثون القياسي. تلتزم معظم واجهات قاعدة بيانات بايثون بهذا المعيار. هناك العديد من خوادم قواعد البيانات التي تدعمها قاعدة بيانات Python مثل MySQL و GadFly و mSQL و PostgreSQL و Microsoft SQL Server 2000 و Informix و Interbase و Oracle و Sybase ، إلخ.
ما هو SQL؟
SQL (تُنطق باسم “تكملة”) هي لغة لتشغيل قواعد البيانات. يتضمن إنشاء قاعدة البيانات والحذف وجلب الصفوف وتعديل الصفوف وما إلى ذلك. SQL هي لغة قياسية ANSI (المعهد الوطني الأمريكي للمعايير) ، ولكن هناك العديد من الإصدارات المختلفة للغة SQL.
SQL هي لغة استعلام هيكلية ، وهي لغة كمبيوتر لتخزين ومعالجة واسترجاع البيانات المخزنة في قاعدة بيانات علائقية.
SQL هي اللغة القياسية لأنظمة قواعد البيانات العلائقية. جميع أنظمة إدارة قواعد البيانات العلائقية (RDMS) مثل MySQL و MS Access و Oracle و Sybase و Informix و Postgres و SQL Server تستخدم SQL كلغة قياسية لقواعد البيانات.
تحظى SQL بشعبية كبيرة لأنها توفر المزايا التالية –
- يسمح للمستخدمين بالوصول إلى البيانات في أنظمة إدارة قواعد البيانات العلائقية.
- يسمح للمستخدمين بوصف البيانات.
- يسمح للمستخدمين بتحديد البيانات في قاعدة البيانات ومعالجة تلك البيانات.
- يسمح بالتضمين في اللغات الأخرى باستخدام وحدات مكتبات SQL
- يسمح للمستخدمين بإنشاء قواعد البيانات والجداول وإفلاتها.
- يسمح للمستخدمين بإنشاء طرق عرض وإجراءات مخزنة ووظائف في قاعدة بيانات.
- يسمح للمستخدمين بتعيين الأذونات على الجداول والإجراءات وطرق العرض.
استخدام SQL في Python
MySQLdb هي واجهة للاتصال بخادم قاعدة بيانات MySQL من Python. يقوم بتنفيذ Python Database API v2.0 وهو مبني على قمة MySQL C API.
لتثبيت وحدة MySQLdb ، استخدم الأمر التالي:
For Ubuntu, use the following command -$ sudo apt-get install python-pip python-dev libmysqlclient-devFor Fedora, use the following command -$ sudo dnf install python python-devel mysql-devel redhat-rpm-config gccFor Python command prompt, use the following command -pip install MySQL-python
قبل المتابعة ، تأكد من تضمين MySQLdb في التعليمات البرمجية الخاصة بك. فقط اكتب ما يلي في نص Python الخاص بك وقم بتنفيذه –
#!/usr/bin/pythonimport MySQLdb
إذا لم يكن MySQLdb مثبتًا في جهازك ، فإنه ينتج الخطأ التالي:
Traceback (most recent call last): File “test.py”, line 3, in <module> import MySQLdbImportError: No module named MySQLdb
إجراء اتصال قاعدة البيانات
هناك الخطوات التالية لتوصيل تطبيق python بقاعدة البيانات الخاصة بنا.
- قم بإنشاء كائن الاتصال
- قم بإنشاء كائن المؤشر
- قم بتنفيذ الاستعلام
إنشاء الاتصال
لإنشاء اتصال بين قاعدة بيانات MySQL وتطبيق python ، يتم استخدام طريقة connect () لوحدة mysql.connector.
قم بتمرير تفاصيل قاعدة البيانات مثل HostName واسم المستخدم وكلمة مرور قاعدة البيانات في استدعاء الأسلوب. تقوم الطريقة بإرجاع كائن الاتصال.
فيما يلي بناء الجملة لاستخدام الاتصال ().
Connection-Object= mysql.connector.connect(host = <host-name> , user = <username> , passwd = <password> )
مثال:
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = “localhost”, user = “root”,passwd = “pwd”) #printing the connection object print(myconn)
إنشاء كائن المؤشر
يمكن تعريف كائن المؤشر على أنه تجريد محدد في Python DB-API 2.0. يسهل علينا الحصول على بيئات عمل منفصلة متعددة من خلال نفس الاتصال بقاعدة البيانات. يمكننا إنشاء كائن المؤشر عن طريق استدعاء وظيفة “المؤشر” لكائن الاتصال. يعد عنصر المؤشر جانبًا مهمًا في تنفيذ الاستعلامات لقواعد البيانات.
فيما يلي بناء الجملة لإنشاء كائن المؤشر.
<my_cur> = conn.cursor()
مثال:
import mysql.connector #Create the connection object myconn = mysql.connector.connect(host = “localhost”, user = “root”,passwd = “pwd”, database = “mydb”) #printing the connection object print(myconn) #creating the cursor object cur = myconn.cursor() print(cur)
تنفيذ الاستعلام
تتضمن هذه العملية تنفيذ استعلام SQL لأداء العملية المطلوبة.
إنشاء قاعدة بيانات
قاعدة البيانات هي مجموعة من الجداول التي بدورها تخزن السجلات ذات الصلة. يمكنك إنشاء قاعدة بيانات في MYSQL باستخدام استعلام إنشاء قاعدة بيانات.
CREATE DATABASE name_of_the_database
مثال:
import mysql.connector#establishing the connectionconn = mysql.connector.connect(host = “localhost”, user = “root”,passwd = “pwd”, database = “mydb”)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Doping database MYDATABASE if already exists.cursor.execute(“DROP database IF EXISTS MyDatabase”)#Preparing query to create a databasesql = “CREATE database MYDATABASE”;#Creating a databasecursor.execute(sql)#Retrieving the list of databasesprint(“List of databases: “)cursor.execute(“SHOW DATABASES”)print(cursor.fetchall())#Closing the connectionconn.close()
انتاج:
List of databases:[(‘information_schema’,), (‘dbbug61332’,), (‘details’,), (‘exampledatabase’,), (‘mydatabase’,), (‘mydb’,), (‘mysql’,), (‘performance_schema’,)]
إنشاء جدول
يتم استخدام عبارة CREATE TABLE لإنشاء جداول في قاعدة بيانات MYSQL. هنا ، تحتاج إلى تحديد اسم الجدول وتعريف (الاسم ونوع البيانات) لكل عمود.
بناء الجملة:
فيما يلي بناء الجملة لإنشاء جدول في MySQL –
CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ….. columnN datatype,);
مثال:
يقوم الاستعلام التالي بإنشاء جدول يسمى EMPLOYEE في MySQL بخمسة أعمدة وهي FIRST_NAME و LAST_NAME و AGE و SEX و INCOME.
CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT);
يمنحك بيان DESC وصف الجدول المحدد. باستخدام هذا يمكنك التحقق مما إذا تم إنشاء الجدول أم لا كما هو موضح أدناه –
Desc Employee;+————+———-+——+—–+———+——-+| Field | Type | Null | Key | Default | Extra |+————+———-+——+—–+———+——-+| FIRST_NAME | char(20) | NO | | NULL | || LAST_NAME | char(20) | YES | | NULL | || AGE | int(11) | YES | | NULL | || SEX | char(1) | YES | | NULL | || INCOME | float | YES | | NULL | |+————+———-+——+—–+———+——-+
إنشاء جدول في MySQL باستخدام بايثون
الطريقة المسماة execute() (تم استدعاؤها في كائن المؤشر) تقبل متغيرين –
- قيمة سلسلة تمثل الاستعلام المطلوب تنفيذه.
- معلمة args اختيارية يمكن أن تكون مجموعة أو قائمة أو قاموس يمثل معلمات الاستعلام (قيم العناصر النائبة).
تقوم بإرجاع قيمة عدد صحيح يمثل عدد الصفوف المتأثرة بالاستعلام.
بمجرد إنشاء اتصال قاعدة البيانات ، يمكنك إنشاء جداول عن طريق تمرير استعلام CREATE TABLE إلى طريقة execute ().
باختصار ، لإنشاء جدول باستخدام python 7minus ؛
- استيراد حزمة mysql.connector.
- قم بإنشاء كائن اتصال باستخدام طريقة mysql.connector.connect () ، بتمرير اسم المستخدم وكلمة المرور والمضيف (افتراضي اختياري: المضيف المحلي) وقاعدة البيانات (اختياري) كمعلمات له.
- قم بإنشاء كائن مؤشر عن طريق استدعاء طريقة cursor() على كائن الاتصال الذي تم إنشاؤه أعلاه.
- بعد ذلك ، قم بتنفيذ عبارة CREATE TABLE بتمريرها كمعامل إلى طريقة التنفيذ ().
مثال:
import mysql.connector#establishing the connectionconn = mysql.connector.connect(host = “localhost”, user = “root”,passwd = “pwd”, database = “mydb”))#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Dropping EMPLOYEE table if already exists.cursor.execute(“DROP TABLE IF EXISTS EMPLOYEE”)#Creating table as per requirementsql =”’CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT)”’cursor.execute(sql)#Closing the connectionconn.close()
المفتاح الأساسي
إنها قيمة فريدة في الجدول. من المفيد العثور على كل صف بشكل فريد في الجدول. لإنشاء مفتاح أساسي ، نستخدم عبارة PRIMARY KEY أثناء إنشاء الجدول.
يتم استخدام العبارة INT AUTO_INCREMENT PRIMARY KEY لتعريف كل صف بشكل فريد برقم يبدأ من 1.
مثال:
import mysql.connector as mysqldb = mysql.connect( host = “localhost”, user = “root”, passwd = “pwd”, database = “mydb”)cursor = db.cursor()## first we have to ‘drop’ the table which has already created to create it again with the ‘PRIMARY KEY’## ‘DROP TABLE table_name’ statement will drop the table from a databasecursor.execute(“DROP TABLE users”)## creating the ‘users’ table again with the ‘PRIMARY KEY’cursor.execute(“CREATE TABLE users (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255))”)
إسقاط المفتاح الأساسي
نستخدمALTER TABLE table_name DROP عبارة اسم_العمود لإسقاط العمود باستخدام المفتاح الأساسي.
import mysql.connector as mysqldb = mysql.connect( host = “localhost”, user = “root”, passwd = “pwd”, database = “mydb”) cursor = db.cursor()## dropping the ‘id’ columncursor.execute(“ALTER TABLE users DROP id”)cursor.execute(“DESC users”)print(cursor.fetchall())
إضافة مفتاح أساسي
إضافة مفتاحأساسي إلى الجدول الموجود. نستخدم ALTER TABLE table_name عبارة ADD PRIMARY KEY (اسم_العمود) لإضافةمفتاح أساسي إلى جدول.
import mysql.connector as mysqldb = mysql.connect( host = “localhost”, user = “root”, passwd = “pwd”, database = “mydb”)cursor = db.cursor()## adding ‘id’ column to the ‘users’ table## ‘FIRST’ keyword in the statement will add a column in the starting of the tablecursor.execute(“ALTER TABLE users ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST”)cursor.execute(“DESC users”)print(cursor.fetchall())
إدخال البيانات
يمكنك إضافة صفوف جديدة إلى جدول موجود في MySQL باستخدام جملة INSERT INTO. في هذا ، تحتاج إلى تحديد اسم الجدول وأسماء الأعمدة والقيم (بنفس ترتيب أسماء الأعمدة).
INSERT INTO TABLE_NAME (column1, column2,column3,…columnN)VALUES (value1, value2, value3,…valueN);
يقوم الاستعلام التالي بإدراج سجل في الجدول المسمى EMPLOYEE.
INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (‘ Mac’, ‘Mohan’, 20, ‘M’, 2000);
إدخال البيانات في MySQL باستخدام Python
طريقة التنفيذ () (التي يتم استدعاؤها في كائن المؤشر) تقبل استعلامًا كمعامل وتنفذ الاستعلام المحدد. لإدخال البيانات ، تحتاج إلى تمرير عبارة MySQL INSERT كمعامل إليها.
cursor.execute(“””INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)”””)
لإدخال البيانات في جدول في MySQL باستخدام Python –
- استيراد حزمة mysql.connector.
- قم بإنشاء كائن اتصال باستخدام طريقة mysql.connector.connect () ، بتمرير اسم المستخدم وكلمة المرور والمضيف (افتراضي اختياري: المضيف المحلي) وقاعدة البيانات (اختياري) كمعلمات له.
- قم بإنشاء كائن مؤشر عن طريق استدعاء طريقة cursor() على كائن الاتصال الذي تم إنشاؤه أعلاه
- بعد ذلك ، قم بتنفيذ عبارة INSERTبتمريرها كمعامل إلى طريقة التنفيذ ().
مثال:
المثال التالي ينفذ عبارة SQL INSERT لإدراج سجل في جدول الموظف –
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()# Preparing SQL query to INSERT a record into the database.sql = “””INSERT INTO EMPLOYEE( FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)”””try: # Executing the SQL command cursor.execute(sql) # Commit your changes in the database conn.commit()except: # Rolling back in case of error conn.rollback()# Closing the connectionconn.close()
يمكنك أيضًا استخدام “٪ s” بدلاً من القيم في استعلام INSERT الخاص بـ MySQL وتمرير القيم إليها كقوائم كما هو موضح أدناه –
cursor.execute(“””INSERT INTO EMPLOYEE VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)”””, (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000))
مثال:
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()# Preparing SQL query to INSERT a record into the database.insert_stmt = ( “INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)” “VALUES (%s, %s, %s, %s, %s)”)data = (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000)try: # Executing the SQL command cursor.execute(insert_stmt, data) # Commit your changes in the database conn.commit()except: # Rolling back in case of error conn.rollback()print(“Data inserted”)# Closing the connectionconn.close()
استرجاع / جلب البيانات من جدول
يمكنك استرداد / جلب البيانات من جدول في MySQL باستخدام استعلام SELECT. يعرض هذا الاستعلام / العبارة محتويات الجدول المحدد في شكل جدولي ويسمى مجموعة النتائج.
SELECT column1, column2, columnN FROM table_name;
افترض أننا أنشأنا جدولًا في MySQL باسم cricketers_data على النحو التالي –
CREATE TABLE cricketers_data( First_Name VARCHAR(255), Last_Name VARCHAR(255), Date_Of_Birth date, Place_Of_Birth VARCHAR(255), Country VARCHAR(255));
وإذا قمنا بإدخال 5 سجلات فيه باستخدام عبارات INSERT كـ –
insert into cricketers_data values( ‘Shikhar’, ‘Dhawan’, DATE(‘1981-12-05’), ‘Delhi’, ‘India’);insert into cricketers_data values( ‘Jonathan’, ‘Trott’, DATE(‘1981-04-22’), ‘CapeTown’, ‘SouthAfrica’);insert into cricketers_data values( ‘Kumara’, ‘Sangakkara’, DATE(‘1977-10-27’), ‘Matale’, ‘Srilanka’);insert into cricketers_data values( ‘Virat’, ‘Kohli’, DATE(‘1988-11-05’), ‘Delhi’, ‘India’);insert into cricketers_data values( ‘Rohit’, ‘Sharma’, DATE(‘1987-04-30’), ‘Nagpur’, ‘India’);
يقوم الاستعلام التالي باسترداد قيم FIRST_NAME و Country من الجدول.
select FIRST_NAME, Country from cricketers_data;+————+————-+| FIRST_NAME | Country |+————+————-+| Shikhar | India || Jonathan | SouthAfrica || Kumara | Srilanka || Virat | India || Rohit | India |+————+————-+
يمكنك أيضًا استرداد جميع قيم كل سجل باستخدام * إنشاء اسم الأعمدة على النحو التالي –
SELECT * from cricketers_data;+————+————+—————+—————-+————-+| First_Name | Last_Name | Date_Of_Birth | Place_Of_Birth | Country |+————+————+—————+—————-+————-+| Shikhar | Dhawan | 1981-12-05 | Delhi | India || Jonathan | Trott | 1981-04-22 | CapeTown | SouthAfrica || Kumara | Sangakkara | 1977-10-27 | Matale | Srilanka || Virat | Kohli | 1988-11-05 | Delhi | India || Rohit | Sharma | 1987-04-30 | Nagpur | India |+————+————+—————+—————-+————-+
استرجاع / جلب البيانات من جدول MySQL باستخدام Python
عملية القراءة على أي قاعدة بيانات تعني جلب بعض المعلومات المفيدة من قاعدة البيانات. يمكنك جلب البيانات من MYSQL باستخدام طريقة fetch () المتوفرة بواسطة mysql-connector-python.
توفر فئة cursor.MySQLCursor ثلاث طرق وهي fetchall () و fetchmany () و fetchone () حيث ،
- يسترد التابع () fetchall جميع الصفوف في مجموعة نتائج الاستعلام ويعيدها كقائمة من المجموعات. (إذا نفذنا هذا بعد استرجاع بعض الصفوف ، فسيتم إرجاع الصفوف المتبقية).
- يقوم الأسلوب fetchone () بجلب الصف التالي في نتيجة استعلام وإعادته على هيئة مجموعة.
- يتشابه أسلوب fetchmany () مع fetchone () ولكنه يسترد المجموعة التالية من الصفوف في مجموعة نتائج الاستعلام بدلاً من صف واحد.
ملاحظة – مجموعة النتائج هي كائن يتم إرجاعه عند استخدام كائن مؤشر للاستعلام عن جدول.
rowcount – هذه سمة للقراءة فقط وتقوم بإرجاع عدد الصفوف التي تأثرت بطريقة التنفيذ ().
مثال:
يقوم المثال التالي بإحضار جميع صفوف جدول الموظف باستخدام استعلام التحديد ومن مجموعة النتائج التي تم الحصول عليها في البداية ، نقوم باسترداد الصف الأول باستخدام طريقة fetchone () ثم جلب الصفوف المتبقية باستخدام طريقة fetchall ().
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Retrieving single rowsql = ”’SELECT * from EMPLOYEE”’#Executing the querycursor.execute(sql)#Fetching 1st row from the tableresult = cursor.fetchone();print(result)#Fetching 1st row from the tableresult = cursor.fetchall();print(result)#Closing the connectionconn.close()
يسترد المثال التالي أول صفين من جدول الموظف باستخدام طريقة fetchmany ().
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Retrieving single rowsql = ”’SELECT * from EMPLOYEE”’#Executing the querycursor.execute(sql)#Fetching 1st row from the tableresult = cursor.fetchmany(size =2);print(result)#Closing the connectionconn.close()
شرط أين
إذا كنت ترغب في جلب أو حذف أو تحديث صفوف معينة من الجدول في MySQL ، فأنت بحاجة إلى استخدام جملة where لتحديد الشروط لتصفية صفوف الجدول للعملية.
على سبيل المثال ، إذا كان لديك عبارة SELECT مع عبارة where ، فسيتم استرداد الصفوف التي تفي بالشرط المحدد فقط.
SELECT column1, column2, columnNFROM table_nameWHERE [condition]
افترض أننا أنشأنا جدولًا في MySQL باسم الموظفين على النحو التالي:
mysql> CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT);
وإذا قمنا بإدخال 4 سجلات فيه باستخدام عبارات INSERT كـ –
INSERT INTO EMPLOYEE VALUES (‘Krishna’, ‘Sharma’, 19, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000), (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000);
يسترد بيان MySQL التالي سجلات الموظفين الذين يزيد دخلهم عن 4000.
SELECT * FROM EMPLOYEE WHERE INCOME > 4000;+————+———–+——+——+——–+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+————+———–+——+——+——–+| Raj | Kandukuri | 20 | M | 7000 || Ramya | Ramapriya | 25 | F | 5000 |+————+———–+——+——+——–+
جملة WHERE باستخدام Python
لجلب سجلات محددة من جدول باستخدام برنامج Python –
- استيراد حزمة mysql.connector.
- قم بإنشاء كائن اتصال باستخدام طريقة mysql.connector.connect () ، بتمرير اسم المستخدم وكلمة المرور والمضيف (افتراضي اختياري: المضيف المحلي) وقاعدة البيانات (اختياري) كمعلمات له.
- قم بإنشاء كائن مؤشر عن طريق استدعاء طريقة cursor() على كائن الاتصال الذي تم إنشاؤه أعلاه.
- بعد ذلك ، قم بتنفيذ عبارة SELECTمع جملة WHERE، عن طريق تمريرها كمعامل إلى طريقة execute ().
مثال
يقوم المثال التالي بإنشاء جدول باسم الموظف ويقوم بتعبئته. ثم باستخدام عبارة where ، يقوم باسترداد السجلات ذات القيمة العمرية أقل من 23.
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Doping EMPLOYEE table if already exists.cursor.execute(“DROP TABLE IF EXISTS EMPLOYEE”)sql = ”’CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT)”’cursor.execute(sql)#Populating the tableinsert_stmt = “INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)”data = [(‘Krishna’, ‘Sharma’, 19, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000),(‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000),(‘Mac’, ‘Mohan’, 26, ‘M’, 2000)]cursor.executemany(insert_stmt, data)conn.commit()#Retrieving specific records using the where clausecursor.execute(“SELECT * from EMPLOYEE WHERE AGE <23”)print(cursor.fetchall())#Closing the connectionconn.close()
انتاج:
[(‘Krishna’, ‘Sharma’, 19, ‘M’, 2000.0), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000.0)]
الترتيب حسب الشرط
أثناء جلب البيانات باستخدام استعلام التحديد ، يمكنك فرز النتائج بالترتيب المطلوب (تصاعديًا أو تنازليًا) باستخدام جملة OrderBy. بشكل افتراضي ، تُفرز هذه الجملة النتائج بترتيب تصاعدي ، إذا كنت بحاجة إلى ترتيبها بترتيب تنازلي ، فأنت بحاجة إلى استخدام “DESC” بشكل صريح.
FROM table_name[WHERE condition][ORDER BY column1, column2,.. columnN] [ASC | DESC]; of the ORDER BY clause:
افترض أننا أنشأنا جدولًا في MySQL باسم الموظفين على النحو التالي:
CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT);
وإذا قمنا بإدخال 4 سجلات فيه باستخدام عبارات INSERT كـ –
INSERT INTO EMPLOYEE VALUES (‘Krishna’, ‘Sharma’, 19, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000), (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000);
يسترد البيان التالي محتويات جدول الموظف بترتيب تصاعدي للعمر.
SELECT * FROM EMPLOYEE ORDER BY AGE;+————+———–+——+——+——–+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+————+———–+——+——+——–+| Krishna | Sharma | 19 | M | 2000 || Raj | Kandukuri | 20 | M | 7000 || Ramya | Ramapriya | 25 | F | 5000 || Mac | Mohan | 26 | M | 2000 |+————+———–+——+——+——–+
يمكنك أيضًا استرداد البيانات بترتيب تنازلي باستخدام DESC كـ –
SELECT * FROM EMPLOYEE ORDER BY FIRST_NAME, INCOME DESC;+————+———–+——+——+——–+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+————+———–+——+——+——–+| Krishna | Sharma | 19 | M | 2000 || Mac | Mohan | 26 | M | 2000 || Raj | Kandukuri | 20 | M | 7000 || Ramya | Ramapriya | 25 | F | 5000 |+————+———–+——+——+——–+
ترتيب حسب الشرط باستخدام بايثون
لاسترداد محتويات جدول بترتيب معين ، قم باستدعاء طريقة execute () على كائن المؤشر ، وقم بتمرير عبارة SELECT مع جملة ORDER BY ، كمعامل لها.
في المثال التالي ، نقوم بإنشاء جدول بالاسم والموظف ، وملئه ، واستعادة سجلاته مرة أخرى بالترتيب (التصاعدي) لأعمارهم ، باستخدام عبارة ORDER BY.
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Doping EMPLOYEE table if already exists.cursor.execute(“DROP TABLE IF EXISTS EMPLOYEE”)sql = ”’CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT)”’cursor.execute(sql)#Populating the tableinsert_stmt = “INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)”data = [(‘Krishna’, ‘Sharma’, 26, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000), (‘Ramya’, ‘Ramapriya’, 29, ‘F’, 5000), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000)]cursor.executemany(insert_stmt, data)conn.commit()#Retrieving specific records using the ORDER BY clausecursor.execute(“SELECT * from EMPLOYEE ORDER BY AGE”)print(cursor.fetchall())#Closing the connectionconn.close()
انتاج |
[(‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000.0), (‘Krishna’, ‘Sharma’, 26, ‘M’, 2000.0), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000.0), (‘Ramya’, ‘Ramapriya’, 29, ‘F’, 5000.0)]
بنفس الطريقة ، يمكنك استرداد البيانات من جدول بترتيب تنازلي باستخدام عبارة ORDER BY.
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Retrieving specific records using the ORDERBY clausecursor.execute(“SELECT * from EMPLOYEE ORDER BY INCOME DESC”)print(cursor.fetchall())#Closing the connectionconn.close()
انتاج:
[(‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000.0), (‘Ramya’, ‘Ramapriya’, 29, ‘F’, 5000.0), (‘Krishna’, ‘Sharma’, 26, ‘M’, 2000.0), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000.0)]
إزالة سجل من الجدول
لإزالة / حذف السجلات من جدول MySQL ، تحتاج إلى استخدام عبارة DELETE FROM. لإزالة سجلات محددة ، تحتاج إلى استخدام جملة WHERE معها.
DELETE FROM table_name [WHERE Clause]
افترض أننا أنشأنا جدولًا في MySQL باسم الموظفين على النحو التالي:
CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT);
وإذا قمنا بإدخال 4 سجلات فيه باستخدام عبارات INSERT كـ –
INSERT INTO EMPLOYEE VALUES (‘Krishna’, ‘Sharma’, 19, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000), (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000);
تحذف عبارة MySQL التالية سجل الموظف مع FIRST_NAME ”Mac”.
DELETE FROM EMPLOYEE WHERE FIRST_NAME = ‘Mac’;
إذا قمت باسترداد محتويات الجدول ، يمكنك مشاهدة 3 سجلات فقط لأننا قمنا بحذف واحد.
select * from EMPLOYEE;+————+———–+——+——+——–+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+————+———–+——+——+——–+| Krishna | Sharma | 20 | M | 2000 || Raj | Kandukuri | 21 | M | 7000 || Ramya | Ramapriya | 25 | F | 5000 |+————+———–+——+——+——–+
إذا قمت بتنفيذ عبارة DELETE بدون عبارة WHERE ، فسيتم حذف جميع السجلات من الجدول المحدد.
DELETE FROM EMPLOYEE;
إذا قمت باسترداد محتويات الجدول ، فستحصل على مجموعة فارغة كما هو موضح أدناه –
select * from EMPLOYEE;
إذا قمت باسترداد محتويات الجدول ، فستحصل على مجموعة فارغة كما هو موضح أدناه –
عملية الحذف مطلوبة عندما تريد حذف بعض السجلات من قاعدة البيانات الخاصة بك.
لحذف السجلات في جدول –
- استيراد حزمة mysql.connector.
- قم بإنشاء كائن اتصال باستخدام طريقة mysql.connector.connect () ، بتمرير اسم المستخدم وكلمة المرور والمضيف (افتراضي اختياري: المضيف المحلي) وقاعدة البيانات (اختياري) كمعلمات له.
- قم بإنشاء كائن مؤشر عن طريق استدعاء طريقة cursor() على كائن الاتصال الذي تم إنشاؤه أعلاه.
- بعد ذلك ، قم بتنفيذ عبارة DELETEعن طريق تمريرها كمعامل إلى طريقة التنفيذ ().
يحذف البرنامج التالي جميع السجلات من الموظف الذي يزيد عمره عن 20 عامًا –
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Retrieving single rowprint(“Contents of the table: “)cursor.execute(“SELECT * from EMPLOYEE”)print(cursor.fetchall())#Preparing the query to delete recordssql = “DELETE FROM EMPLOYEE WHERE AGE > ‘%d'” % (25)try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database conn.commit()except: # Roll back in case there is any error conn.rollback()#Retrieving dataprint(“Contents of the table after delete operation “)cursor.execute(“SELECT * from EMPLOYEE”)print(cursor.fetchall())#Closing the connectionconn.close()
انتاج:
Contents of the table:[(‘Krishna’, ‘Sharma’, 22, ‘M’, 2000.0), (‘Raj’, ‘Kandukuri’, 23, ‘M’, 7000.0), (‘Ramya’, ‘Ramapriya’, 26, ‘F’, 5000.0), (‘Mac’, ‘Mohan’, 20, ‘M’, 2000.0), (‘Ramya’, ‘Rama priya’, 27, ‘F’, 9000.0)]Contents of the table after delete operation:[(‘Krishna’, ‘Sharma’, 22, ‘M’, 2000.0), (‘Raj’, ‘Kandukuri’, 23, ‘M’, 7000.0), (‘Mac’, ‘Mohan’, 20, ‘M’, 2000.0)]
تحديث / تعديل الجدول
تعمل عملية التحديث في أي قاعدة بيانات على تحديث سجل واحد أو أكثر ، وهي متوفرة بالفعل في قاعدة البيانات. يمكنك تحديث قيم السجلات الموجودة في MySQL باستخدام جملة UPDATE. لتحديث صفوف معينة ، تحتاج إلى استخدام جملة WHERE معها.
UPDATE table_nameSET column1 = value1, column2 = value2…., columnN = valueNWHERE [condition];
يمكنك دمج عدد N من الشروط باستخدام عامل التشغيل AND أو OR.
افترض أننا أنشأنا جدولًا في MySQL باسم الموظفين على النحو التالي:
CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT);
وإذا قمنا بإدخال 4 سجلات فيه باستخدام عبارات INSERT كـ –
INSERT INTO EMPLOYEE VALUES (‘Krishna’, ‘Sharma’, 19, ‘M’, 2000), (‘Raj’, ‘Kandukuri’, 20, ‘M’, 7000), (‘Ramya’, ‘Ramapriya’, 25, ‘F’, 5000), (‘Mac’, ‘Mohan’, 26, ‘M’, 2000);
بيان MySQL التالي يزيد من عمر جميع الموظفين الذكور لسنة واحدة –
UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = ‘M’;
إذا قمت باسترداد محتويات الجدول ، يمكنك رؤية القيم المحدثة على النحو التالي –
select * from EMPLOYEE;+————+———–+——+——+——–+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+————+———–+——+——+——–+| Krishna | Sharma | 20 | M | 2000 || Raj | Kandukuri | 21 | M | 7000 || Ramya | Ramapriya | 25 | F | 5000 || Mac | Mohan | 27 | M | 2000 |+————+———–+——+——+——–+
تحديث محتويات الجدول باستخدام بايثون
لتحديث السجلات في جدول في MySQL باستخدام Python –
- استيراد حزمة mysql.connector.
- قم بإنشاء كائن اتصال باستخدام طريقة mysql.connector.connect () ، بتمرير اسم المستخدم وكلمة المرور والمضيف (افتراضي اختياري: المضيف المحلي) وقاعدة البيانات (اختياري) كمعلمات له.
- قم بإنشاء كائن مؤشر عن طريق استدعاء طريقة cursor() على كائن الاتصال الذي تم إنشاؤه أعلاه.
- بعد ذلك ، قم بتنفيذ عبارة UPDATE عن طريق تمريرها كمعامل إلى أسلوب execute ().
المثال التالي يزيد عمر كل الذكور بسنة واحدة.
import mysql.connector#establishing the connectionconn = mysql.connector.connect( user=’root’, password=’pwd’, host=’localhost’, database=’mydb’)#Creating a cursor object using the cursor() methodcursor = conn.cursor()#Preparing the query to update the recordssql = ”’UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = ‘M’ ”’try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database conn.commit()except: # Rollback in case there is any error conn.rollback()#Retrieving datasql = ”’SELECT * from EMPLOYEE”’#Executing the querycursor.execute(sql)#Displaying the resultprint(cursor.fetchall())#Closing the connectionconn.close()
انتاج |
[(‘Krishna’, ‘Sharma’, 22, ‘M’, 2000.0), (‘Raj’, ‘Kandukuri’, 23, ‘M’, 7000.0), (‘Ramya’, ‘Ramapriya’, 26, ‘F’, 5000.0)]