Python SQLite - Краткое руководство

SQLite3 можно интегрировать с Python с помощью модуля sqlite3, написанного Герхардом Харингом. Он предоставляет интерфейс SQL, соответствующий спецификации DB-API 2.0, описанной в PEP 249. Вам не нужно устанавливать этот модуль отдельно, поскольку он поставляется по умолчанию вместе с Python версии 2.5.x и более поздних версий.

Чтобы использовать модуль sqlite3, вы должны сначала создать объект подключения, представляющий базу данных, а затем, при желании, вы можете создать объект курсора, который поможет вам в выполнении всех операторов SQL.

API модуля Python SQLite3

Ниже приведены важные процедуры модуля sqlite3, которые могут удовлетворить ваши требования для работы с базой данных SQLite из вашей программы Python. Если вы ищете более сложное приложение, вы можете заглянуть в официальную документацию модуля Python sqlite3.

Sr.No. API и описание
1

sqlite3.connect(database [,timeout ,other optional arguments])

Этот API открывает соединение с файлом базы данных SQLite. Вы можете использовать ": memory:", чтобы открыть соединение с базой данных, которая находится в ОЗУ, а не на диске. Если база данных открыта успешно, возвращается объект подключения.

2

connection.cursor([cursorClass])

Эта процедура создает курсор, который будет использоваться во всем программировании вашей базы данных с помощью Python. Этот метод принимает единственный необязательный параметр cursorClass. Если указан, это должен быть настраиваемый класс курсора, расширяющий sqlite3.Cursor.

3

cursor.execute(sql [, optional parameters])

Эта подпрограмма выполняет инструкцию SQL. Оператор SQL может быть параметризован (т. Е. Заполнители вместо литералов SQL). Модуль sqlite3 поддерживает два типа заполнителей: вопросительные знаки и именованные заполнители (именованный стиль).

For example - cursor.execute ("вставить в людей значения (?,?)", (Кто, возраст))

4

connection.execute(sql [, optional parameters])

Эта процедура является сокращением вышеупомянутого метода execute, предоставленного объектом курсора, и она создает промежуточный объект курсора, вызывая метод курсора, а затем вызывает метод выполнения курсора с заданными параметрами.

5

cursor.executemany(sql, seq_of_parameters)

Эта процедура выполняет команду SQL для всех последовательностей параметров или сопоставлений, найденных в последовательности sql.

6

connection.executemany(sql[, parameters])

Эта процедура представляет собой ярлык, который создает промежуточный объект курсора путем вызова метода курсора, а затем вызывает метод cursor.s executemany с заданными параметрами.

7

cursor.executescript(sql_script)

Эта процедура одновременно выполняет несколько операторов SQL, представленных в форме сценария. Сначала он выдает оператор COMMIT, а затем выполняет сценарий SQL, который он получает в качестве параметра. Все операторы SQL должны разделяться точкой с запятой (;).

8

connection.executescript(sql_script)

Эта процедура представляет собой ярлык, который создает промежуточный объект курсора путем вызова метода курсора, а затем вызывает метод курсора executescript с заданными параметрами.

9

connection.total_changes()

Эта процедура возвращает общее количество строк базы данных, которые были изменены, вставлены или удалены с момента открытия соединения с базой данных.

10

connection.commit()

Этот метод фиксирует текущую транзакцию. Если вы не вызовете этот метод, все, что вы сделали с момента последнего вызова commit (), не будет видно из других подключений к базе данных.

11

connection.rollback()

Этот метод откатывает любые изменения в базе данных с момента последнего вызова commit ().

12

connection.close()

Этот метод закрывает соединение с базой данных. Обратите внимание, что это не вызывает автоматического вызова commit (). Если вы просто закроете соединение с базой данных без предварительного вызова commit (), ваши изменения будут потеряны!

13

cursor.fetchone()

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

14

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

Эта процедура выбирает следующий набор строк результата запроса, возвращая список. Когда строк больше нет, возвращается пустой список. Метод пытается получить столько строк, сколько указано в параметре размера.

15

cursor.fetchall()

Эта процедура извлекает все (оставшиеся) строки результата запроса, возвращая список. Если строки недоступны, возвращается пустой список.

Чтобы установить соединение с командной строкой SQLite Open, просмотрите место, где вы установили SQLite, и просто выполните команду sqlite3 как показано ниже -

Установление соединения с использованием Python

Вы можете общаться с базой данных SQLite2 с помощью модуля Python SQLite3. Для этого в первую очередь необходимо установить соединение (создать объект соединения).

Чтобы установить соединение с базой данных SQLite3 с использованием Python, вам необходимо:

  • Импортируйте модуль sqlite3 с помощью оператора импорта.

  • Метод connect () принимает имя базы данных, к которой необходимо подключиться, в качестве параметра и возвращает объект Connection.

пример

import sqlite3
conn = sqlite3.connect('example.db')

Вывод

print("Connection established ..........")

Используя оператор SQLite CREATE TABLE, вы можете создать таблицу в базе данных.

Синтаксис

Ниже приведен синтаксис для создания таблицы в базе данных SQLite.

CREATE TABLE database_name.table_name(
   column1 datatype PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

пример

После запроса / оператора SQLite создается таблица с именем CRICKETERS в базе данных SQLite -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

Создадим еще одну таблицу OdiStats, описывающую однодневную статистику крикета каждого игрока в таблице CRICKETERS.

sqlite> CREATE TABLE ODIStats (
   First_Name VARCHAR(255),
   Matches INT,
   Runs INT,
   AVG FLOAT,
   Centuries INT,
   HalfCenturies INT 
);
sqlite>

Вы можете получить список таблиц в базе данных в базе данных SQLite, используя .tablesкоманда. После создания таблицы, если вы можете проверить список таблиц, вы можете увидеть в нем вновь созданную таблицу как -

sqlite> . tables
CRICKETERS ODIStats
sqlite>

Создание таблицы с использованием Python

Объект Cursor содержит все методы для выполнения запросов и выборки данных и т. Д. Метод курсора класса соединения возвращает объект курсора.

Поэтому для создания таблицы в базе данных SQLite с помощью python -

  • Установите соединение с базой данных с помощью метода connect ().

  • Создайте объект курсора, вызвав метод cursor () для созданного выше объекта подключения.

  • Теперь выполните оператор CREATE TABLE, используя метод execute () класса Cursor.

пример

Следующая программа Python создает таблицу с именем Employee в SQLite3 -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)
print("Table created successfully........")

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

Table created successfully........

Вы можете добавлять новые строки в существующую таблицу SQLite с помощью оператора INSERT INTO. В этом случае вам необходимо указать имя таблицы, имена столбцов и значения (в том же порядке, что и имена столбцов).

Синтаксис

Ниже приведен рекомендуемый синтаксис оператора INSERT:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
   VALUES (value1, value2, value3,...valueN);

Где, column1, column2, column3, .. - это имена столбцов таблицы, а value1, value2, value3, ... - значения, которые необходимо вставить в таблицу.

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя оператор CREATE TABLE, как показано ниже -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

Следующий оператор PostgreSQL вставляет строку в созданную выше таблицу.

sqlite> insert into CRICKETERS (First_Name, Last_Name, Age, Place_Of_Birth, Country) 
   values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite>

Если при вставке записей с помощью оператора INSERT INTO вы пропустите имена столбцов, эта запись будет вставлена, оставляя пустые места в столбцах, которые вы пропустили.

sqlite> insert into CRICKETERS (First_Name, Last_Name, Country) 
   values ('Jonathan', 'Trott', 'SouthAfrica');
sqlite>

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

sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

После вставки записей в таблицу вы можете проверить ее содержимое с помощью оператора SELECT, как показано ниже -

sqlite> select * from cricketers;
Shikhar  |Dhawan     | 33 | Delhi | India
Jonathan |Trott      |    |       | SouthAfrica
Kumara   |Sangakkara | 41 | Matale| Srilanka
Virat    |Kohli      | 30 | Delhi | India
Rohit    |Sharma     | 32 | Nagpur| India
sqlite>

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

Чтобы добавить записи в существующую таблицу в базе данных SQLite -

  • Импортируйте пакет sqlite3.

  • Создайте объект подключения с помощью метода connect (), передав ему имя базы данных в качестве параметра.

  • В cursor()Метод возвращает объект курсора, с помощью которого вы можете общаться с SQLite3. Создайте объект курсора, вызвав объект cursor () на (созданном выше) объекте Connection.

  • Затем вызовите метод execute () для объекта курсора, передав ему оператор INSERT в качестве параметра.

пример

Следующий пример python вставляет записи в таблицу с именем EMPLOYEE -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Preparing SQL queries to INSERT a record into the database.
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama Priya', 27, 'F', 9000)'''
)
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')

cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')

cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')

cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')

# Commit your changes in the database
conn.commit()

print("Records inserted........")

# Closing the connection
conn.close()

Вывод

Records inserted........

Вы можете получить данные из таблицы SQLite с помощью запроса SELECT. Этот запрос / оператор возвращает содержимое указанного отношения (таблицы) в табличной форме и вызывается как набор результатов.

Синтаксис

Ниже приводится синтаксис оператора SELECT в SQLite:

SELECT column1, column2, columnN FROM table_name;

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующий запрос SELECT извлекает значения столбцов FIRST_NAME, LAST_NAME и COUNTRY из таблицы CRICKETERS.

sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar   |Dhawan       |India
Jonathan  |Trott        |SouthAfrica
Kumara    |Sangakkara   |Srilanka
Virat     |Kohli        |India
Rohit     |Sharma       |India
sqlite>

Как вы заметили, оператор SELECT базы данных SQLite просто возвращает записи указанных таблиц. Чтобы получить форматированный вывод, вам нужно установитьheader, и mode используя соответствующие команды перед оператором SELECT, как показано ниже -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name   Last_Name    Country
----------   ----------   ----------
Shikhar      Dhawan       India
Jonathan     Trott        SouthAfric
Kumara       Sangakkara   rilanka
Virat        Kohli        India
Rohit        Sharma       India

Если вы хотите получить все столбцы каждой записи, вам необходимо заменить имена столбцов на «*», как показано ниже -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age        Place_Of_Birth   Country
----------   ----------   -------    --------------   ----------
Shikhar      Dhawan       33         Delhi            India
Jonathan     Trott        38         CapeTown         SouthAfric
Kumara       Sangakkara   41         Matale           Srilanka
Virat        Kohli        30         Delhi            India
Rohit        Sharma       32         Nagpur           India
sqlite>

В SQLite по умолчанию ширина столбцов составляет 10 значений, превышающих эту ширину (обратите внимание на столбец страны во 2- й строке в приведенной выше таблице). Вы можете установить ширину каждого столбца на необходимое значение, используя.width перед извлечением содержимого таблицы, как показано ниже -

sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
sqlite>

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

READ Операция с любой базой данных означает получение некоторой полезной информации из базы данных. Вы можете получить данные из MYSQL, используя метод fetch (), предоставляемый модулем sqlite python.

Класс sqlite3.Cursor предоставляет три метода, а именно fetchall (), fetchmany () и fetchone (), где,

  • Метод fetchall () извлекает все строки в наборе результатов запроса и возвращает их в виде списка кортежей. (Если мы выполним это после получения нескольких строк, он вернет оставшиеся).

  • Метод fetchone () выбирает следующую строку в результате запроса и возвращает ее как кортеж.

  • Метод fetchmany () похож на метод fetchone (), но он извлекает следующий набор строк в результирующем наборе запроса вместо одной строки.

Note - Набор результатов - это объект, который возвращается, когда объект курсора используется для запроса таблицы.

пример

В следующем примере извлекаются все строки таблицы EMPLOYEE с помощью запроса SELECT, и изначально из полученного набора результатов мы извлекаем первую строку с помощью метода fetchone (), а затем извлекаем оставшиеся строки с помощью метода fetchall ().

Следующая программа Python показывает, как получать и отображать записи из таблицы COMPANY, созданной в приведенном выше примере.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
   ('Vinay', 'Battacharya', 20, 'M', 6000.0),
   ('Sharukh', 'Sheik', 25, 'M', 8300.0),
   ('Sarmista', 'Sharma', 26, 'F', 10000.0),
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

Если вы хотите получить, удалить или обновить определенные строки таблицы в SQLite, вам необходимо использовать предложение where, чтобы указать условие для фильтрации строк таблицы для операции.

Например, если у вас есть оператор SELECT с предложением where, будут извлечены только те строки, которые удовлетворяют указанному условию.

Синтаксис

Ниже приведен синтаксис предложения WHERE в SQLite:

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

Вы можете указать условие поиска, используя сравнение или логические операторы. как>, <, =, LIKE, NOT и т. д. Следующие примеры поясняют эту концепцию.

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующий оператор SELECT извлекает записи, возраст которых превышает 35 -

sqlite> SELECT * FROM CRICKETERS WHERE AGE > 35;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -----------
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

Предложение Where с использованием Python

Объект / класс Cursor содержит все методы для выполнения запросов, выборки данных и т. Д. Метод курсора класса соединения возвращает объект курсора.

Поэтому для создания таблицы в базе данных SQLite с помощью python -

  • Установите соединение с базой данных с помощью метода connect ().

  • Создайте объект курсора, вызвав метод cursor () для созданного выше объекта подключения.

  • Теперь выполните оператор CREATE TABLE, используя метод execute () класса Cursor.

пример

В следующем примере создается таблица с именем Employee и заполняется ее. Затем, используя предложение where, он извлекает записи со значением возраста менее 23.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = 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 table
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')

#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")

print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

[('Vinay', 'Battacharya', 20, 'M', 6000.0)]

При получении данных с помощью запроса SELECT вы получите записи в том же порядке, в котором вы их вставили.

Вы можете отсортировать результаты в желаемом порядке (по возрастанию или по убыванию) с помощью Order Byпункт. По умолчанию в этом предложении результаты сортируются в порядке возрастания, если вам нужно расположить их в порядке убывания, вам нужно явно использовать «DESC».

Синтаксис

Ниже приводится синтаксис предложения ORDER BY в SQLite.

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующий оператор SELECT извлекает строки таблицы CRICKETERS в порядке возрастания их возраста -

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -----------
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

Вы можете использовать более одного столбца для сортировки записей таблицы. Следующие операторы SELECT сортируют записи таблицы CRICKETERS на основе столбцов AGE и FIRST_NAME .

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE, FIRST_NAME;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

По умолчанию ORDER BY Предложение сортирует записи таблицы в порядке возрастания, вы можете упорядочить результаты в порядке убывания, используя DESC как -

sqlite> SELECT * FROM CRICKETERS ORDER BY AGE DESC;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Kumara       Sangakkara   41     Matale       Srilanka
Jonathan     Trott        38     CapeTown     SouthAfrica
Shikhar      Dhawan       33     Delhi        India
Rohit        Sharma       32     Nagpur       India
Virat        Kohli        30     Delhi        India
sqlite>

Предложение ORDER BY с использованием Python

Чтобы получить содержимое таблицы в определенном порядке, вызовите метод execute () для объекта курсора и передайте оператор SELECT вместе с предложением ORDER BY в качестве параметра для него.

пример

В следующем примере мы создаем таблицу с именем и сотрудником, заполняем ее и извлекаем ее записи в порядке возрастания (возрастания) с помощью предложения ORDER BY.

import psycopg2
#establishing the connection
conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

#Setting auto commit false
conn.autocommit = True

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT, SEX CHAR(1),
   INCOME INT,
   CONTACT INT
)'''
cursor.execute(sql)
#Populating the table
#Populating the table
cursor.execute(
   '''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
   ('Vinay', 'Battacharya', 20, 'M', 6000), 
   ('Sharukh', 'Sheik', 25, 'M', 8300), 
   ('Sarmista', 'Sharma', 26, 'F', 10000),
   ('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()

#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")

print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

[
   ('Vinay', 'Battacharya', 20, 'M', 6000, None),
   ('Tripthi', 'Mishra', 24, 'F', 6000, None),
   ('Sharukh', 'Sheik', 25, 'M', 8300, None),
   ('Sarmista', 'Sharma', 26, 'F', 10000, None),
   ('Ramya', 'Rama priya', 27, 'F', 9000, None)
]

UPDATE Операция в любой базе данных подразумевает изменение значений одной или нескольких записей таблицы, которые уже доступны в базе данных. Вы можете обновить значения существующих записей в SQLite с помощью оператора UPDATE.

Чтобы обновить определенные строки, вам необходимо использовать предложение WHERE вместе с ним.

Синтаксис

Ниже приведен синтаксис оператора UPDATE в SQLite:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующее утверждение изменяет возраст игрока в крикет, имя которого Shikhar -

sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>

Если вы извлечете запись, в которой ПЕРВОЕ ИМЯ - Шихар, вы заметите, что значение возраста было изменено на 45 -

sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       45     Delhi        India
sqlite>

Если вы не использовали предложение WHERE, значения всех записей будут обновлены. После оператора UPDATE возраст всех записей в таблице CRICKETERS увеличивается на 1 -

sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>

Если вы извлекаете содержимое таблицы с помощью команды SELECT, вы можете увидеть обновленные значения как -

sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Shikhar      Dhawan       46     Delhi        India
Jonathan     Trott        39     CapeTown     SouthAfrica
Kumara       Sangakkara   42     Matale       Srilanka
Virat        Kohli        31     Delhi        India
Rohit        Sharma       33     Nagpur       India
sqlite>

Обновление существующих записей с помощью Python

Чтобы добавить записи в существующую таблицу в базе данных SQLite -

  • Импортируйте пакет sqlite3.

  • Создайте объект подключения с помощью метода connect (), передав ему имя базы данных в качестве параметра.

  • В cursor()Метод возвращает объект курсора, с помощью которого вы можете общаться с SQLite3. Создайте объект курсора, вызвав объект cursor () на (созданном выше) объекте Connection.

  • Затем вызовите метод execute () для объекта курсора, передав ему оператор UPDATE в качестве параметра.

пример

Следуя примеру Python, создает таблицу с именем EMPLOYEE, вставляет в нее 5 записей и увеличивает возраст всех сотрудников-мужчин на 1 -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)

#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
   ('Vinay', 'Battacharya', 20, 'M', 6000), 
   ('Sharukh', 'Sheik', 25, 'M', 8300), 
   ('Sarmista', 'Sharma', 26, 'F', 10000),
   ('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()

#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Updating the records
sql = '''UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX = 'M' '''
cursor.execute(sql)
print("Table updated...... ")

#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

Contents of the Employee table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

Чтобы удалить записи из таблицы SQLite, вам необходимо использовать оператор DELETE FROM. Чтобы удалить определенные записи, вам необходимо использовать предложение WHERE вместе с ним.

Синтаксис

Ниже приведен синтаксис запроса DELETE в SQLite:

DELETE FROM table_name [WHERE Clause]

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующее утверждение удаляет запись игрока в крикет, фамилия которого «Сангаккара».

sqlite> DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
sqlite>

Если вы извлечете содержимое таблицы с помощью оператора SELECT, вы увидите только 4 записи, так как мы удалили одну.

sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       46     Delhi        India
Jonathan     Trott        39     CapeTown     SouthAfrica
Virat        Kohli        31     Delhi        India
Rohit        Sharma       33     Nagpur       India
sqlite>

Если вы выполните оператор DELETE FROM без предложения WHERE, все записи из указанной таблицы будут удалены.

sqlite> DELETE FROM CRICKETERS;
sqlite>

Поскольку вы удалили все записи, если вы попытаетесь получить содержимое таблицы CRICKETERS, используя оператор SELECT, вы получите пустой набор результатов, как показано ниже -

sqlite> SELECT * FROM CRICKETERS;
sqlite>

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

Чтобы добавить записи в существующую таблицу в базе данных SQLite -

  • Импортируйте пакет sqlite3.

  • Создайте объект подключения с помощью метода connect () , передав ему имя базы данных в качестве параметра.

  • В cursor()Метод возвращает объект курсора, с помощью которого вы можете общаться с SQLite3. Создайте объект курсора, вызвав объект cursor () на (созданном выше) объекте Connection.

  • Затем вызовите метод execute () для объекта курсора, передав DELETE заявление как параметр к нему.

пример

В следующем примере Python удаляются записи из таблицы EMPLOYEE со значением возраста больше 25.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving contents of the table
print("Contents of the table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')

#Retrieving data after delete
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

Contents of the table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Contents of the table after delete operation
[
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]

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

Синтаксис

Ниже приводится синтаксис оператора DROP TABLE в PostgreSQL:

DROP TABLE table_name;

пример

Предположим, мы создали две таблицы с именами CRICKETERS и EMPLOYEES, используя следующие запросы:

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
sqlite> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, 
   SEX CHAR(1), INCOME FLOAT
);
sqlite>

Теперь, если вы проверите список таблиц с помощью .tables вы можете увидеть созданные выше таблицы в ней (списке) как -

sqlite> .tables
CRICKETERS EMPLOYEE
sqlite>

Следующий оператор удаляет таблицу с именем Employee из базы данных -

sqlite> DROP table employee;
sqlite>

Поскольку вы удалили таблицу Employee, если вы снова получите список таблиц, вы увидите в нем только одну таблицу.

sqlite> .tables
CRICKETERS
sqlite>

Если вы снова попытаетесь удалить таблицу сотрудников, поскольку вы уже удалили ее, вы получите сообщение об ошибке «нет такой таблицы», как показано ниже -

sqlite> DROP table employee;
Error: no such table: employee
sqlite>

Чтобы решить эту проблему, вы можете использовать предложение IF EXISTS вместе с оператором DELETE. Это удаляет таблицу, если она существует, иначе пропускает операцию DELETE.

sqlite> DROP table IF EXISTS employee;
sqlite>

Удаление таблицы с помощью Python

Вы можете удалить таблицу в любое время, используя оператор DROP в MYSQL, но вам нужно быть очень осторожным при удалении любой существующей таблицы, потому что потерянные данные не будут восстановлены после удаления таблицы.

пример

Чтобы удалить таблицу из базы данных SQLite3 с помощью python, вызовите execute() для объекта курсора и передайте ему оператор drop в качестве параметра.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE emp")
print("Table dropped... ")

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

Table dropped...

При извлечении записей, если вы хотите ограничить их определенным числом, вы можете сделать это, используя предложение LIMIT SQLite.

Синтаксис

Ниже приведен синтаксис предложения LIMIT в SQLite:

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

И если мы вставили в него 5 записей, используя инструкции INSERT как -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

Следующий оператор извлекает первые 3 записи таблицы Cricketers с помощью предложения LIMIT -

sqlite> SELECT * FROM CRICKETERS LIMIT 3;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

Если вам нужно ограничить количество записей, начиная с n-й записи (а не с 1- й ), вы можете сделать это, используя OFFSET вместе с LIMIT.

sqlite> SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Kumara       Sangakkara   41     Matale       Srilanka
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
sqlite>

Предложение LIMIT с использованием Python

Если вы вызовете метод execute () для объекта курсора, передав запрос SELECT вместе с предложением LIMIT, вы можете получить необходимое количество записей.

пример

Следующий пример python извлекает первые две записи таблицы EMPLOYEE с помощью предложения LIMIT.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 3'''

#Executing the query
cursor.execute(sql)

#Fetching the data
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0)
]

Когда вы разделили данные на две таблицы, вы можете получить объединенные записи из этих двух таблиц с помощью объединений.

пример

Предположим, мы создали таблицу с именем CRICKETERS, используя следующий запрос -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

Создадим еще одну таблицу OdiStats, описывающую однодневную статистику крикета каждого игрока в таблице CRICKETERS.

sqlite> CREATE TABLE ODIStats (
   First_Name VARCHAR(255),
   Matches INT,
   Runs INT,
   AVG FLOAT,
   Centuries INT,
   HalfCenturies INT
);
sqlite>

Следующий оператор извлекает данные, объединяющие значения в этих двух таблицах -

sqlite> SELECT
   Cricketers.First_Name, Cricketers.Last_Name, Cricketers.Country,
   OdiStats.matches, OdiStats.runs, OdiStats.centuries, OdiStats.halfcenturies
   from Cricketers INNER JOIN OdiStats ON Cricketers.First_Name = OdiStats.First_Name;
First_Name  Last_Name   Country  Matches  Runs   Centuries   HalfCenturies
----------  ----------  -------  -------  ----   ---------   -------------- 
Shikhar     Dhawan      Indi     133      5518   17          27
Jonathan    Trott       Sout     68       2819   4           22
Kumara      Sangakkara  Sril     404      14234  25          93
Virat       Kohli       Indi     239      11520  43          54
Rohit       Sharma      Indi     218      8686   24          42
sqlite>

Предложение Join с использованием Python

Следуя примеру SQLite, демонстрирует предложение JOIN с использованием python -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving data
sql = '''SELECT * from EMP INNER JOIN CONTACT ON EMP.CONTACT = CONTACT.ID'''

#Executing the query
cursor.execute(sql)

#Fetching 1st row from the table
result = cursor.fetchall();

print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Вывод

[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0, 101, 101, '[email protected]', 'Hyderabad'), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0, 102, 102,'[email protected]', 'Vishakhapatnam'), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0, 103, 103, '[email protected]', 'Pune'), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0, 104, 104, '[email protected]', 'Mumbai')
]

Класс sqlite3.Cursor - это экземпляр, с помощью которого вы можете вызывать методы, выполняющие операторы SQLite, извлекать данные из наборов результатов запросов. Вы можете создать объект Cursor, используя метод cursor () объекта / класса Connection.

пример

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

Методы

Ниже приведены различные методы, предоставляемые классом / объектом Cursor.

Метод Описание
выполнить ()

Эта подпрограмма выполняет инструкцию SQL. Оператор SQL может быть параметризован (т. Е. Заполнителями вместо литералов SQL). Модуль psycopg2 поддерживает заполнитель с использованием знака% s

Например: cursor.execute ("вставить в людей значения (% s,% s)", (кто, возраст))

исполнение ()

Эта процедура выполняет команду SQL для всех последовательностей параметров или сопоставлений, найденных в последовательности sql.

fetchone ()

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

fetchmany ()

Эта процедура выбирает следующий набор строк результата запроса, возвращая список. Когда строк больше нет, возвращается пустой список. Метод пытается получить столько строк, сколько указано в параметре размера.

fetchall ()

Эта процедура извлекает все (оставшиеся) строки результата запроса, возвращая список. Если строки недоступны, возвращается пустой список.

Свойства

Ниже приведены свойства класса Cursor -

Метод Описание
arraySize

Это свойство чтения / записи, вы можете установить количество строк, возвращаемых методом fetchmany ().

описание

Это свойство только для чтения, которое возвращает список, содержащий описание столбцов в наборе результатов.

lastrowid

Это свойство только для чтения, если в таблице есть какие-либо автоматически увеличивающиеся столбцы, оно возвращает значение, сгенерированное для этого столбца в последней операции INSERT или UPDATE.

rowcount

Это возвращает количество возвращенных / обновленных строк в случае операций SELECT и UPDATE.

связь

Этот доступный только для чтения атрибут обеспечивает соединение с базой данных SQLite, используемое объектом Cursor.