English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite3 может интегрироваться с Python с помощью модуля sqlite3. Модуль sqlite3 написан Gerhard Haring. Он предоставляет интерфейс SQL, совместимый с спецификацией DB-API 2.0, описанной в PEP 249. Вам не нужно устанавливать этот модуль отдельно, так как он включен по умолчанию в версии Python 2.5.x и выше.
Для использования модуля sqlite3 вам сначала необходимо создать объект подключения, представляющий базу данных, а затем, по вашему выбору, создать объект курсора, который поможет вам выполнять все SQL-запросы.
Ниже перечислены важные программы модуля sqlite3, которые могут удовлетворить ваши потребности в использовании SQLite-базы данных в Python-программах. Если вам нужно узнать больше деталей, пожалуйста, ознакомьтесь с официальной документацией модуля Python sqlite3.
Номер | API & Описание |
---|---|
1 | sqlite3.connect(database [,timeout ,other optional arguments]) Этот API открывает соединение с файлом базы данных SQLite database. Вы можете использовать ':memory:' для открытия подключения к базе данных database в RAM, а не на диске. Если база данных успешно открыта, возвращается объект подключения. Когда база данных доступна для множества подключений и одна из них изменяет базу данных, SQLite-база данных блокируется до завершения транзакции. Параметр timeout указывает на продолжительность ожидания подключения до блокировки, до возникновения исключения или разрыва подключения. Значение по умолчанию для параметра timeout составляет 5.0 (5 секунд). Если указанное имя базы данных filename не существует, этот вызов создаст базу данных. Если вы не хотите создавать базу данных в текущем каталоге, вы можете указать имя файла с путем, чтобы создать базу данных в любом месте. |
2 | connection.cursor([cursorClass]) Этот пример кода создает cursorЭтот метод используется в Python для работы с базами данных. Этот метод принимает единственный опциональный параметр cursorClass. Если этот параметр предоставлен, то он должен быть расширением класса cursor из sqlite3. |
3 | cursor.execute(sql [, optional parameters]) Этот пример кода выполняет один SQL-запрос. Этот SQL-запрос может быть параметризирован (т.е. использовать占ачники вместо текста SQL). Модуль sqlite3 поддерживает два типа占ачников: вопросительный знак и именованные占ачники (нaming style). Например: cursor.execute("insert into people values (?, ?)", (who, age)) |
4 | connection.execute(sql [, optional parameters]) Этот пример кода является быстрым доступом к методу, выполняемому вышеупомянутым объектом курсора (cursor), который создает промежуточный объект курсора с помощью метода курсора (cursor) и затем вызывает метод execute курсора с переданными параметрами. |
5 | cursor.executemany(sql, seq_of_parameters) Этот пример кода выполняет один SQL-запрос для всех параметров или маппингов в seq_of_parameters. |
6 | connection.executemany(sql[, parameters]) Этот пример кода представляет собой быстрый доступ к промежуточному объекту курсора, созданному методом вызова курсора (cursor), а затем вызывается метод executemany курсора с переданными параметрами. |
7 | cursor.executescript(sql_script) Этот пример кода выполняет несколько SQL-запросов после получения скрипта. Сначала он выполняет команду COMMIT, а затем выполняет传入 как параметр SQL-скрипт. Все SQL-запросы должны быть разделены точкой с запятой ;. |
8 | connection.executescript(sql_script) Этот例行ная программа является кратким способом создания промежуточного объекта курсора, созданного вызовом метода cursor, а затем вызовом метода 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]) Этот метод��取查询 результат集中的 следующую группу строк, возвращая их в виде списка. Если нет больше доступных строк, возвращает пустой список. Этот метод пытается получить столько строк, сколько указано параметром size. |
15 | cursor.fetchall() Этот例行ная программа��取查询结果集中所有(оставшиеся)строки и возвращает их в виде списка. Если нет доступных строк, возвращает пустой список. |
Ниже приведен код на Python, показывающий, как подключиться к существующей базе данных. Если база данных не существует, то она будет создана, и в конце вернется объект базы данных.
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Opened database successfully"
Здесь вы также можете скопировать имя базы данных в определенное имя :memory:Таким образом, база данных будет создана в RAM. Давайте запустим上面的 программу и создадим нашу базу данных в текущей директории test.dbВы можете изменить путь по своему усмотрению. Сохраните上面的 код в файл sqlite.py и выполните его как показано ниже. Если база данных успешно создана, то будет отображено следующее сообщение:
$chmod +x sqlite.py $./sqlite.py Успешно открыта база данных
Ниже приведен пример Python-кода, который будет использоваться для создания таблицы в созданной ранее базе данных:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Opened database successfully" c = conn.cursor() c.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print "Table created successfully" conn.commit() conn.close()
При выполнении вышеуказанной программы она создаст данные в базе данных: test.db Создание таблицы COMPANY в базе данных, и будет отображено следующее сообщение:
База данных открыта успешно Таблица успешно создана
Ниже приведен пример Python-программы, который показывает, как создать записи в созданной ранее таблице COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Opened database successfully" c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )") conn.commit() print "Records created successfully" conn.close()
При выполнении вышеуказанной программы она создаст данные в таблице COMPANY и отобразит следующие строки:
База данных открыта успешно Записи успешно созданы
Ниже приведен пример Python-программы, который показывает, как получить и отобразить записи из созданной ранее таблицы COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Opened database successfully" cursor = c.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully" conn.close()
Во время выполнения программы, она генерирует следующие результаты:
База данных открыта успешно ID = 1 NAME = Paul ADDRESS = California СALARY = 20000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway СALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond СALARY = 65000.0 Операция выполнена успешно
Ниже приведен пример Python-кода, который показывает, как использовать оператор UPDATE для обновления любой записи и как получить и отобразить обновленные записи из таблицы COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Opened database successfully" c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1") conn.commit() print "Общее количество обновленных строк: ", conn.total_changes cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully" conn.close()
Во время выполнения программы, она генерирует следующие результаты:
База данных открыта успешно Общее количество обновленных строк: 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway СALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond СALARY = 65000.0 Операция выполнена успешно
Ниже приведен пример Python-кода, который показывает, как использовать оператор DELETE для удаления любой записи и как получить и отобразить оставшиеся записи из таблицы COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Opened database successfully" c.execute("DELETE from COMPANY where ID=2;") conn.commit() print "Общее количество удаленных строк: ", conn.total_changes cursor = conn.execute("SELECT id, name, address, salary from COMPANY") for row in cursor: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operation done successfully" conn.close()
Во время выполнения программы, она генерирует следующие результаты:
База данных открыта успешно Общее количество удаленных строк: 1 ID = 1 NAME = Paul ADDRESS = California СALARY = 20000.0 ID = 3 NAME = Teddy ADDRESS = Norway СALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond СALARY = 65000.0 Операция выполнена успешно