Для работы с SQLite в Python 2 должен быть установлен пакет sqlite и python 2.5+.
# под Arch Linux sudo pacman -S sqlite
# под Ubuntu sudo apt-get install sqlite
Проверка sqlite
$ sqlite3 test.db
sqlite> .tables
sqlite> .exit
$ python
>>> import sqlite3
>>> sqlite3.version
Создаем базу данных, вставляем данные и делаем выборку.
# -*- coding: utf_8 -*-
import sqlite3
con = sqlite3.connect('users.db') # Создаем соединение с базой данных. Если БД не существует то она будет создана, иначе файл будет открыт.
cur = con.cursor() # Создание объекта курсора для взаимодействия с БД.
cur.execute('CREATE TABLE names (id INTEGER PRIMARY KEY, firstName VARCHAR(100), secondName VARCHAR(40))') #Создание таблицы
names
con.commit()
cur.execute('INSERT INTO names (id, firstName, secondName) VALUES(NULL, "Vasya", "Pupkin")') #Вставка кортежа со значениями
con.commit()
print cur.lastrowid
cur.execute('SELECT * FROM names ')
print cur.fetchall()
con.close()
Вставляем кортеж со значениями из переменных
firstName ='Vasya'
secondName='Pupkin'
cur.execute('INSERT INTO users VALUES (null, ?, ?)', (firstName, secondName))
con.commit()
ВАЖНО: При вставке одного значения в один столбец нужно так-же соблюдать синтаксис формата кортежа. Например такой код не будет работать:
firstName ='Vasya'
cur.execute('INSERT INTO names (firstName) VALUES (?)', (firstName))
Ты получишь ошибку:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied.
После значения необходимо ставить запятую, тогда интерпретатор воспримет его как кортеж:
cur.execute('INSERT INTO names (firstName) VALUES (?)', (firstName,))
Получаем выборку данных из нескольких строк:
firstName ='Vasya'
secondName='Pupkin'
cur.execute('INSERT INTO names VALUES (null, ?, ?)', (firstName, secondName))
con.commit()
cur.execute('SELECT * FROM names')
print cur.fetchall()
cur.execute('SELECT * FROM names')
for row in cur:
print '-'*10
print 'ID:', row[0]
print 'First name:', row[1]
print 'Second name:', row[2]
print '-'*10
con.close()
Вывод:
[(1, u'Vasya', u'Pupkin')]
----------
ID: 1
First name: Vasya
Second name: Pupkin
----------
Process finished with exit code 0
Получаем выборку данных одной строки:
with con:
cur = con.cursor()
cur.execute('SELECT * FROM names')
data = cur.fetchone()
print data[1]
con.close()
Вывод:
Vasya
Можно выбрать определенное количество строк, передав значение в курсор:
cur.execute('SELECT * FROM names')
print cur.fetchmany(2)
Вывод:
[(1, u'Vasya', u'Pupkin'), (2, u'Vasya', u'Pupkin')]