Документация по Python. Теоретические материалы, и практические задачи

SQLite Python

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

  1. Добавление данных
  2. Обновление данных

Вставка данных в SQLite

На прошлом уроке, по созданию таблиц, мы создали две таблицы, projests, tasks. Алгоритм наших действий следующий:

  1. Сначала необходимо подключиться к нашей базе данных, в случае отсутствия, база будет создана автоматически, но в таком случае, вам придется заново создавать таблицы, поэтому рекомендую сначала почитать предыдущую статью.
  2. Создаем объект Cursor вызвав метод курсора объекта Connection
  3. Выполняем запроса INSERT

Вставим в нашу таблицу projects новый проект, а в таблицу tasks вставим несколько задач.

Ниже приведен весь листинг кода, позже мы разберем каждый участок кода, что она делает, и как это работает.

                    
import sqlite3
from sqlite3 import Error


def create_connection(db_file):
   
    conn = None
    try:
        conn = sqlite3.connect(db_file)
    except Error as e:
        print(e)

    return conn


def create_project(conn, project):
  
    sql = ''' INSERT INTO projects(name,begin_date,end_date)
              VALUES(?,?,?) '''
    cur = conn.cursor()
    cur.execute(sql, project)
    conn.commit()
    return cur.lastrowid


def create_task(conn, task):
    """
    Create a new task
    :param conn:
    :param task:
    :return:
    """

    sql = ''' INSERT INTO tasks(name,priority,status_id,project_id,begin_date,end_date)
              VALUES(?,?,?,?,?,?) '''
    cur = conn.cursor()
    cur.execute(sql, task)
    conn.commit()
    return cur.lastrowid


def main():
    database = r"C:\sqlite\db\pythonsqlite.db"

    # create a database connection
    conn = create_connection(database)
    with conn:
        # create a new project
        project = ('Cool App with SQLite & Python', '2015-01-01', '2021-01-30');
        project_id = create_project(conn, project)

        # tasks
        task_1 = ('Analyze the requirements of the app', 1, 1, project_id, '2015-01-01', '2015-01-02')
        task_2 = ('Confirm with user about the top req', 1, 1, project_id, '2015-01-03', '2015-01-05')

        # create tasks
        create_task(conn, task_1)
        create_task(conn, task_2)


if __name__ == '__main__':
    main()
  1. Создаем функцию create_connection() по аналогии с предыдущим уроком, можете просто скопировать прошлый код
  2. Создаем новую функцию create_project(), для добавления нового проекта в таблицу projects. В этой функции, мы использовали атрибут lastrowid объекта cursor, данный атрибут вернет нам сгенерированный идентификатор.
  3. Создаем новую функцию create_tasks(), для добавления задач, в таблицу tasks
  4. Создаем функцию main(), которая служит для запуска нашего скрипта. Данная функция добавит в нашу базу, один проект и две задачи
  5. Завершающим этапом, мы вызываем функцию main() конструкцией 
                        
    
    if __name__ == '__main__':
        main()
  6. Запустите скрипт, затем откройте свою базу через программу SQLiteStudio, и просмотрите данные наших двух таблиц.
    Таблица projects
    Таблица tasks

 Обновление данных в SQLite

При обновлении базы данных, мы используем запрос UPDATE. Представим себе ситуацию, что нам надо обновить данные в таблице tasks. Логика решения этой задачи довольно проста.

  1. Подключаемся к нашей базе
  2. Создаем объект cursor
  3. Выполняем запрос UPDATE методом execute

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

                    
import sqlite3
from sqlite3 import Error


def create_connection(db_file):
 
    conn = None
    try:
        conn = sqlite3.connect(db_file)
    except Error as e:
        print(e)

    return conn


def update_task(conn, task):

    sql = ''' UPDATE tasks
              SET priority = ? ,
                  begin_date = ? ,
                  end_date = ?
              WHERE id = ?'''
    cur = conn.cursor()
    cur.execute(sql, task)
    conn.commit()


def main():
    database = r"C:\sqlite\db\pythonsqlite.db"

    # create a database connection
    conn = create_connection(database)
    with conn:
        update_task(conn, (2, '2015-01-04', '2015-01-06', 2))


if __name__ == '__main__':
    main()

По сути в этом листинге, ничего особо не изменилось, у нас появилась новая функция update_task(), данная функция предназначена для обновления данных для конкретной задачи.

                    
def update_task(conn, task):
    """
    update priority, begin_date, and end date of a task
    :param conn:
    :param task:
    :return: project id
    """
    sql = ''' UPDATE tasks
              SET priority = ? ,
                  begin_date = ? ,
                  end_date = ?
              WHERE id = ?'''
    cur = conn.cursor()
    cur.execute(sql, task)
    conn.commit()

Затем в функции main() вызываем ранее созданную нами функцию update_task() для обновления задачи с id 2.

                    
def main():
    database = r"C:\sqlite\db\pythonsqlite.db"

    # create a database connection
    conn = create_connection(database)
    with conn:
        update_task(conn, (2, '2015-01-04', '2015-01-06', 2))


if __name__ == '__main__':
    main()

Запустите программу, и откройте свою базу в SQLite для просмотра обновленных данных. Ниже приведен скриншот обновленных данных в таблице tasks.

На данном скриншоте,мы ясно видим, что задача с id 2 обновлена надлежащим образом.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *