Программирование и разработка веб-приложений. Использование Python для работы с базой данных

Содержание

Слайд 2

SQLite Одна таблица

SQLite

Одна таблица

Слайд 3

sqlitebrowser.org

sqlitebrowser.org

Слайд 4

Работа с SQLite import sqlite3 print(sqlite3.version) print(sqlite3.apilevel) print(sqlite3.sqlite_version)

Работа с SQLite

import sqlite3
print(sqlite3.version)
print(sqlite3.apilevel)
print(sqlite3.sqlite_version)

Слайд 5

Открытие базы (создание) и закрытие import sqlite3 import os db_path='e://sqlite//' db_file='db01.db'

Открытие базы (создание) и закрытие

import sqlite3
import os
db_path='e://sqlite//'
db_file='db01.db'
full_path=os.path.join(db_path,db_file)
con=sqlite3.connect(full_path)
#Соединение с базой данных. connect()

возвращает объект соединения.
con.close() 
#Закрытие соединения
Слайд 6

Объект Курсор (Cursor, cur) cur = con.cursor()

Объект Курсор (Cursor, cur)

cur = con.cursor()

Слайд 7

Создание и удаление таблицы cur.execute('DROP TABLE IF EXISTS books') #удаление в

Создание и удаление таблицы

cur.execute('DROP TABLE IF EXISTS books') #удаление в случае

если таблица существует
cur.execute('CREATE TABLE books (id INTEGER PRIMARY KEY,title VARCHAR(30), author VARCHAR(30), pers TEXT)')

cur.execute('CREATE TABLE IF NOT EXISTS books (id INTEGER PRIMARY KEY,title VARCHAR(30), author VARCHAR(30), pers TEXT)')
#создание таблицы, если она не была создана ранее

Слайд 8

Небольшое пояснение execute - выполнение запроса INTEGER PRIMARY KEY прибавляется автоматически.

Небольшое пояснение

execute - выполнение запроса
INTEGER PRIMARY KEY прибавляется автоматически.
  INTEGER PRIMARY KEY

AUTOINCREMENT используют разные алгоритмы для создания ID

 

Слайд 9

Заполнение данных в таблице cur.execute('INSERT INTO books (id, author,pers) VALUES (NULL,

Заполнение данных в таблице

cur.execute('INSERT INTO books (id, author,pers) VALUES (NULL, "Aibolit",

"Doctor Aibolit")')
con.commit()
author='Barmaley'
pers='Zloy razboinik'
cur.execute('INSERT INTO books VALUES (NULL,?,?)',(author,pers))
con.commit()
Слайд 10

Вывод номера последней записи и вывод всех записей print (cur.lastrowid) #2 cur.execute('SELECT * FROM books') print(cur.fetchall())

Вывод номера последней записи и вывод всех записей

print (cur.lastrowid)
#2
cur.execute('SELECT * FROM

books')

print(cur.fetchall())
Слайд 11

Просмотр по элементам cur.execute('SELECT * FROM books') for i in cur:

Просмотр по элементам

cur.execute('SELECT * FROM books')
for i in cur:
print('*'*10)

print('id: ',i[0])
print('author: ',i[1])
print('pers: ',i[2])
Слайд 12

Или сразу через cur.fetchall() cur=con.cursor() cur.execute(''' SELECT * FROM books ''') for i in cur.fetchall(): print(i)

Или сразу через cur.fetchall()

cur=con.cursor()
cur.execute('''
SELECT * FROM books
''')
for i in cur.fetchall():
print(i)

Слайд 13

Просмотр по элементам через дополнительный объект rows= cur.fetchall() for i in

Просмотр по элементам через дополнительный объект

rows= cur.fetchall()
for i in rows:
print('*'*10)

print('id: ',i[0])
print('author: ',i[1])
print('pers: ',i[2])
Слайд 14

Выбор по id из словаря cur.execute('SELECT author,pers FROM books WHERE id=:id',{'id':id})

Выбор по id из словаря

cur.execute('SELECT author,pers FROM books WHERE id=:id',{'id':id})
rows= cur.fetchall()
for

row in rows:
print (row)
Слайд 15

Выполнение запросов – SQL прописан отдельно import sqlite3 con=sqlite3.connect('catalog.db') cur=con.cursor() sql='''

Выполнение запросов – SQL прописан отдельно

import sqlite3
con=sqlite3.connect('catalog.db')
cur=con.cursor()
sql='''
CREATE TABLE user (
id_user INTEGER

PRIMARY KEY AUTOINCREMENT,
user_name TEXT,
user_dict TEXT
);
'''
cur.executescript(sql)
cur.close()
con.close()
Слайд 16

SQL в cur.execute con=sqlite3.connect(full_path) cur=con.cursor() #CREATE TABLE #CREATE TABLE IF NOT

SQL в cur.execute

con=sqlite3.connect(full_path)
cur=con.cursor()
#CREATE TABLE
#CREATE TABLE IF NOT EXISTS
cur.execute('''CREATE TABLE IF

NOT EXISTS books(
id_books INTEGER PRIMARY KEY,
author_book TEXT,
title_book TEXT,
publish_book DATE,
age_book DATE,
keyword_book TEXT,
value_book REAL
)''')
con.commit()
cur.close()
con.close()
Слайд 17

SQL в con.execute con=sqlite3.connect(full_path) con.execute('''CREATE TABLE IF NOT EXISTS books( id_books

SQL в con.execute

con=sqlite3.connect(full_path)
con.execute('''CREATE TABLE IF NOT EXISTS books(
id_books INTEGER PRIMARY KEY,
author_book

TEXT,
title_book TEXT,
publish_book DATE,
age_book DATE,
keyword_book TEXT,
value_book REAL
)''')
con.commit()
#cur.close()
con.close()
Слайд 18

Обновление значений полей id=6 cur.execute('UPDATE books SET pers=? WHERE id=?', ('Dochka melnika',id)) print(cur.rowcount)

Обновление значений полей

id=6
cur.execute('UPDATE books SET pers=? WHERE id=?', ('Dochka melnika',id))
print(cur.rowcount)

Слайд 19

Использование row_factory con.row_factory=sqlite3.Row cur=con.cursor() cur.execute(''' SELECT * FROM books ''') #for

Использование row_factory

con.row_factory=sqlite3.Row
cur=con.cursor()
cur.execute('''
SELECT * FROM books
''')
#for i in cur.fetchall():
# print(i)
#for i in cur.fetchall():
# print(i['title_book'],i['author_book'])
for

i in cur.fetchall():
id_books, author_book, title_book, publish_book, age_book, keyword_book, value_book =i
print(title_book,author_book)
Слайд 20

вывод последнего id print(cur.lastrowid)

вывод последнего id

print(cur.lastrowid)

Слайд 21

create_function import sqlite3 import md5 def md5sum(t): return md5.md5(t).hexdigest() con =

create_function

import sqlite3
import md5
def md5sum(t):
return md5.md5(t).hexdigest()
con = sqlite3.connect(“my.db")


con.create_function("md5", 1, md5sum)
cur = con.cursor()
cur.execute("select md5(?)", ("foo",))
print (cur.fetchone()[0])

cbd18db4cc2f85cedef654fccc4a4d8

Слайд 22

create_aggregate class MySum (object): def __init__(self): self.count = 0 def step(self,

create_aggregate

class MySum (object):
def __init__(self):
self.count = 0

def step(self, value):
self.count += value
def finalize(self):
return self.count
con = sqlite3.connect(“my.db")
con.create_aggregate("mysum", 1, MySum)
cur = con.cursor()
cur.execute("create table test(i)")
cur.execute("insert into test(i) values (1)")
cur.execute("insert into test(i) values (10)")
cur.execute("insert into test(i) values (15)")
cur.execute("select mysum(i) from test")
print (cur.fetchall())

Создает пользовательскую совокупную (агрегатную) функцию.

[(26,)]

Слайд 23

Методы connection (con) close() - закрывает соединение с БД open() –

Методы connection (con)

close() - закрывает соединение с БД
open() – устанавливает соединение

с БД
commit() - завершает текущую транзакцию
cursor() - возвращает объект Cursor (cur) для выполнения запросов
rollback() - откатывает изменения в текущей транзакции
Слайд 24

Методы cursor (cur) close() - закрывает курсор execute(sql[, ]) - выполняет

Методы cursor (cur)

close() - закрывает курсор
execute(sql[, <значения>]) - выполняет один запрос
executemany(sql, args) -

выполняет запрос для нескольких значений
exequtescript(sql) – выполняет запросы по созданному ранее скрипту
fetchall() - возвращает список кортежей всех записей запроса
fetchmany() - возвращает список кортежей записей запроса
fetchone() - возвращает одну запись из результата запроса в виде кортежа
Слайд 25

Создание БД в ОП >>> con=sqlite3.connect(':memory:') >>> cur=con.cursor() >>> sql=''' ...

Создание БД в ОП

>>> con=sqlite3.connect(':memory:')
>>> cur=con.cursor()
>>> sql='''
... CREATE TABLE IF NOT

EXISTS author (
... id_author INTEGER PRIMARY KEY AUTOINCREMENT,
... author_name TEXT,
... author_descr TEXT
... );
... '’’