В этой большой статьей, мы с вами сегодня познакомимся с одним из самых популярных встроенных модулей, для работы с базой данных python sqlite. SQLite предназначен для хранения информации, и для его удобного чтения. На этом уроке, мы разберем, все основные моменты по работе с ним.
Создание новой базы данных SQLite
Как и в примере с csv файлами, при попытке подключения к несуществующей базе данных, она автоматически создастся. И так, что бы начать работу с базой данных, нам ее надо сначала создать, как обычно, рассмотрим сначала код, затем разберем как это работает.
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
""" Создание соединения с БД """
conn = None
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection(r"C:\db\pythonsqlite.db")
- Импортируем непосредственно сам модуль SQLite
- Создаем функцию подключения create_connection, в качестве аргумента передаем нашу БД
- Вызываем функцию connect() модуля SQLite
- Используем блок try…except, что бы в случае ошибке вывести ее на экран, в случае успеха, мы увидим версию SQLite
- Затем после всех наших операций, незабываем закрыть соединение
После запуска, вы увидите, что по указанному пути, у вас появился файл pythonsqlite.db.
Создание базы данных в оперативной памяти
Базу данных можно создать и внутри вашей оперативной памяти. Для этого вам достаточно передать имя файла как :memory: методу connect(), после чего, у вас создастся новая БД внутри вашего ОЗУ. Ниже приведен пример кода.
import sqlite3
from sqlite3 import Error
def create_connection():
""" Создание БД внутри ОЗУ
"""
conn = None;
try:
conn = sqlite3.connect(':memory:')
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection()
Создание таблиц в SQLite python
Для создания новой таблицы в SQLite из программы Python, нам необходимо выполнить следующие действия:
- Создаем объект Connection используя метод connect() модуля sqlite3
- Создаем объект cursor, вызвав метод cursor объекта Connection
- Передаем инструкцию CREATE TABLE методу execute() объекта Cursor
И так, теперь для демонстрации, попробуем создать две таблицы, проекты и задачи, как показано на рисунке ниже.
Сначала приведу полный листинг кода, а потом поэтапно разберем, как это все работает.
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
conn = None
try:
conn = sqlite3.connect(db_file)
return conn
except Error as e:
print(e)
return conn
def create_table(conn, create_table_sql):
try:
c = conn.cursor()
c.execute(create_table_sql)
except Error as e:
print(e)
def main():
database = r"C:\sqlite\db\pythonsqlite.db"
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects (
id integer PRIMARY KEY,
name text NOT NULL,
begin_date text,
end_date text
); """
sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
status_id integer NOT NULL,
project_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);"""
# create a database connection
conn = create_connection(database)
# create tables
if conn is not None:
# create projects table
create_table(conn, sql_create_projects_table)
# create tasks table
create_table(conn, sql_create_tasks_table)
else:
print("Error! cannot create the database connection.")
if __name__ == '__main__':
main()
- Создаем функцию create_connection() для соединения с базой данных, которая возвращает объект conn. Объект conn представляет базу SQLite.
- Создаем функцию create_table(), которая принимает объект conn, и инструкцию SQL create_table_sql. Внутри нашей функции вызываем метод execute() объекта Cursor(), что бы выполнить запрос в БД.
- Создаем функцию main(), для создания таблиц projects и tasks
- Запускаем функцию main()
После запуска нашей программы, вы увидите, что в вашей базе данных, создались две таблицы project и tasks.