Интерфейс Python с базой данных SQL

Опубликовано: 18 Января, 2023

Python — это простой в освоении язык, и возможность подключения Python к любой базе данных SQL — очень желанный вариант, позволяющий иметь функцию сохранения. Python — это объектно-ориентированный язык программирования с открытым исходным кодом. Новички в индустрии программного обеспечения, в том числе школьники, могут легко выучить Python. Python можно легко загрузить в соответствии с операционной системой, и все начинающие пользователи также могут легко это сделать.

SQL Server — это база данных, полезная для постоянных данных. Всякий раз, когда мы хотим хранить много информации, мы зависим от базы данных. Это может быть любая база данных, такая как MySQL, SQL Server и даже база данных NoSQL, такая как MongoDB. Информация хранится в нескольких таблицах в базе данных, такой как MySQL или SQLServer. В базе данных может быть создано несколько таблиц. Каждая таблица может иметь несколько столбцов. Таблица может иметь множество строк, где каждая строка представляет информацию о студенте/сотруднике/экзамене и т. д. Это означает, что каждая строка должна быть однозначно идентифицирована с помощью первичного ключа. Кроме того, у нас есть разные ключи, такие как уникальный ключ, внешний ключ и т. д. для доступа к данным.

Необходимость взаимодействия Python с базой данных SQL

Вся база данных (RDBMS) требуется для хранения данных и управления данными (путем вставки/удаления/обновления) данных. Способ обработки этих наборов операций называется операциями CRUD (CREATE/READ/UPDATE/DELETE). Python — это удобный язык, и он может легко подключаться к любой базе данных с помощью вышеуказанных способов. После правильной установки Python и эта база данных могут быть подключены. Любые операции CRUD могут быть легко обработаны.

  1. В Python мы будем получать входные данные из разных источников.
  2. Python будет работать с входными данными и производить желаемый результат после определенных вычислений.
  3. Конечный результат можно сохранить в базе данных, если мы взаимодействуем с базами данных Python и SQL.

Для взаимодействия Python и базы данных нам необходимо установить нужные установки. Для каждой базы данных SQL (RDBMS) нам нужно установить ее по-разному. Это также отличается от операционной системы

Для модуля sqlite3:

pip install pysqlite3 

В более ранних версиях Python это будет

pip install pysqlite

Для среды анаконды

conda install sqlite3

Аналогично для MySQL это будет

pip install mysqlclient
--older versions  (1.2.x versions (legacy Python only))
pip install MySQL-python

SQL-сервер:

pip install pymssql

Подключение MySQL к Python

Следующая программа покажет, как соединить MySQL с Python.

Python3




# Python3 Program to connect MySQL to Python
# As we are connecting mysql, this is needed
import mysql.connector
db_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
  
# Database is in scope now
my_database = db_connection.cursor()

Как только мы получим соединение, нам нужно увидеть, как вставлять данные. Предположим, что в MySQL есть таблица с именем «GEEKPORTALLOGIN». Предоставление скриптов для создания таблицы в MySQL, а также

drop table GEEKSFORGEEKS.GEEKPORTALLOGIN;  # If we want to drop the table if already exists

— Create the table GEEKPORTALLOGIN 

CREATE TABLE GEEKSFORGEEKS.GEEKPORTALLOGIN (id INT NOT NULL,

   loginName VARCHAR(20) default NULL,

   password VARCHAR(45) default NULL,

   PRIMARY KEY (id)

);

Вставка данных с помощью Python

Мы можем вставлять данные в базу данных с помощью Python. Для вставки данных используются следующие методы:

1. execute(): эта функция используется для подготовки операции с базой данных и ее запуска. Он принимает параметры в виде ряда или отображения.

Синтаксис:

execute(operation[, parameters])

2. executemany(): эта функция используется для создания действия базы данных и запуска его для всех кортежей параметров в ряду параметров. Он особенно используется для инструкций по обновлению базы данных.

Синтаксис:

executemany(operation, sequence_of_parameters)

В следующих примерах показано, как вставлять данные в базу данных с помощью Python.

Пример 1:

Python3




# Python Program to insert data into database 
import mysql.connector
  
db_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
my_database = db_connection.cursor()
  
# Get the inputs. Usually from frontend we may 
# get inputs and they will be passed to Python
# Here let us get from Python itself
loginName = input("Enter a login Name : ");
  
# For sample only password is getting shown here
password = input("Enter a password : "); 
idx = "1"
sql_statement = "INSERT INTO geekportallogin (id,loginName,password) values(%s,%s,%s)"
values = (idx,loginName,password)
  
# Execute will help to insert a single row of data
my_database.execute(sql_statement,values)
  
# To save the data into the database under the particular table
db_connection.commit()

Выход:

Пример 2:

Точно так же мы можем вставить несколько строк данных вместе. Это будет идеальным сценарием, когда мы делаем объемные вставки.

Python3




# Python3 program to insert multiple rows
import mysql.connector
  
sample_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
sample_database = sample_connection.cursor()
  
# Inserting data
values = [ ("2","geekb","geekb"),
  
           ("3","geekc","geekc"),
  
           ("4","geekd","geekd")  
          ]
sql_statement = "INSERT INTO geekportallogin (id,loginName,password)  values(%s,%s,%s)"
  
# As we are going to insert multiple values, we need to use executemany
sample_database.executemany(sql_statement,values)
  
# To save the data into the database under the particular table
sample_connection.commit()  

Выход:

Получение данных с помощью Python

Мы также можем получать данные с помощью Python из базы данных MySql. Чтобы получить данные из базы данных MySql, мы можем использовать следующие методы:

1. fetchall(): эта функция извлечет из таблицы все кортежи из последнего выполненного оператора. Если больше нет доступных строк, он вернет пустой список.

Синтаксис:

data = cursor.fetchall()

2. fetchone(): эта функция используется для выборки одной строки из указанной таблицы.

Синтаксис:

data = cursor.fetchone()

2. fetchmany(): эта функция используется для извлечения следующего набора строк из результата запроса, и если доступных строк больше нет, она возвращает пустой список. Размер функции fetchmany() по умолчанию равен только одному. Он принимает только один аргумент, который представляет количество строк для выборки.

Синтаксис:

data = cursor.fetchmant([size = cursor.arraySize])

Следующие примеры покажут, как получить данные MySQL из Python.

Пример 1:

Python3




# Python program to fetch data from MySql database
import mysql.connector
sample_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin"
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
sample_database = sample_connection.cursor()
  
# Specify your correct table name here
sql_statement = "SELECT * FROM GEEKPORTALLOGIN" 
sample_database.execute(sql_statement)
  
# This step is used to get all the records as a list of tuples
sample_output = sample_database.fetchall()  
  
# Iterate over the output
for value in sample_output:
  print(value)

Выход:

Пример 2:

Python3




# Python program to fetch data from MySql database
import mysql.connector
sample_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
sample_database = sample_connection.cursor()
  
# Specify your correct table name here
sql_statement = "SELECT * FROM GEEKPORTALLOGIN" 
sample_database.execute(sql_statement)
  
# fetchmany(size=n) will tell n records where
# n can be more than 1
# This step is used to get only 2 records
sample_output = sample_database.fetchmany(size=2)  
  
# Iterate over the output
# Hence we can see only first 2 rows of data
# as we have given size = 2
for value in sample_output:
  print(value)
   

Выход:

Обновление данных MySQL с помощью Python

Мы также можем обновить данные, хранящиеся в базе данных MySql, с помощью python. В следующем примере показано, как обновить данные новыми данными.

Пример:

Python3




# Python program to update data in database
import mysql.connector
  
sample_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root",  
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
sample_database = sample_connection.cursor()
  
# Specify the update statement
sql_statement = "UPDATE  GEEKPORTALLOGIN SET loginName = %s WHERE id = %s" 
  
# Provide the values now for loginName and id
  
# First one will indicate for loginName and second one for id
values = ("geeka123","1"
  
# This will take care of updating values
sample_database.execute(sql_statement,values) 
sample_connection.commit()

Выход:

Удаление данных MySQL с помощью Python

Мы также можем удалить определенную строку из базы данных MySql, используя python. В следующем примере показано, как удалить указанную строку из записи.

Пример:

Python3




# Python program to delete the row
import mysql.connector
  
sample_connection = mysql.connector.connect(
  host="localhost",
    
  # Change your username here
  user="root"
    
  # Change your password here
  passwd="admin",  
    
  # Need to point for the correct db
  database="geeksforgeeks" 
)
sample_database = sample_connection.cursor()
  
# Specify the delete statement
sql_statement = "DELETE FROM  GEEKPORTALLOGIN  WHERE id = %s" 
  
# Provide the values now for id
# We are going to delete for id = 1. 
# This is the syntax we have to follow
values = ("1",) 
  
# This will take care of deleting values
sample_database.execute(sql_statement,values)  
sample_connection.commit()

Выход: