Разделы презентаций


Программирование и разработка веб-приложений

Содержание

SQLiteНесколько таблиц

Слайды и текст этой презентации

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

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

Слайд 2SQLite
Несколько таблиц

SQLiteНесколько таблиц

Слайд 3Новая БД
import sqlite3
import os
import datetime

db_path='e:/sqlite/'
db_file='db11.db'
full_path=os.path.join(db_path,db_file)

print(sqlite3.apilevel)
print(full_path)
con=sqlite3.connect(full_path)
con.close()

Новая БДimport sqlite3import osimport datetimedb_path='e:/sqlite/'db_file='db11.db'full_path=os.path.join(db_path,db_file)print(sqlite3.apilevel)print(full_path)con=sqlite3.connect(full_path)con.close()

Слайд 4Создание таблиц
sql='''\
CREATE TABLE IF NOT EXISTS author(
id_author INTEGER PRIMARY

KEY,
name_author TEXT,
descr_author TEXT
);
CREATE TABLE publication(
id_publication INTEGER PRIMARY KEY,
name_publication TEXT
);
CREATE TABLE

books(
id_book INTEGER PRIMARY KEY,
id_author INTEGER,
id_publication INTEGER,
title_book TEXT,
descr_book TEXT,
number_book INTEGER
);
'''
Создание таблиц sql='''\	CREATE TABLE IF NOT EXISTS author(		id_author INTEGER PRIMARY KEY,		name_author TEXT,		descr_author TEXT	);	CREATE TABLE publication(		id_publication INTEGER PRIMARY

Слайд 5con=sqlite3.connect(full_path)
cur=con.cursor()
cur.executescript(sql)
cur.close()
con.close()

con=sqlite3.connect(full_path)cur=con.cursor()cur.executescript(sql)cur.close()con.close()

Слайд 6Заполнение автора
con=sqlite3.connect(full_path)
cur=con.cursor()
sql='''\
INSERT INTO author (name_author, descr_author)
VALUES ("Чуковский", "Автор множества книг

для детей")
'''
cur.execute(sql)
con.commit() # Завершаем транзакцию
cur.close()

# Закрываем объект-курсор
con.close() # Закрываем соединение
Заполнение автораcon=sqlite3.connect(full_path)cur=con.cursor()sql='''\	INSERT INTO author (name_author, descr_author)	VALUES (

Слайд 7Заполнение типов публикаций с использованием кортежей и словаря
con=sqlite3.connect(full_path)
cur=con.cursor()

var1=("Роман",)
var2=(2,"Рассказ")
var3={"id":3, "name":"Стихотворение"}

sql1='''INSERT INTO

publication (name_publication) VALUES(?)'''
sql2='''INSERT INTO publication VALUES (?,?)'''
sql3='''INSERT INTO publication VALUES

(:id, :name)'''
Заполнение типов публикаций  с использованием кортежей и словаряcon=sqlite3.connect(full_path)cur=con.cursor()var1=(

Слайд 8cur.execute(sql1,var1)
cur.execute(sql2,var2)
cur.execute(sql3,var3)
con.commit()
cur.close()
con.close()

cur.execute(sql1,var1)cur.execute(sql2,var2)cur.execute(sql3,var3)con.commit()cur.close()con.close()

Слайд 9Создание и использование списка из кортежей для заполнения
var_list=[
(1,1,"Айболит","Добрый доктор",100),
(1,2,

"Бармалей", "Злой разбойник",200),
(1,3, "Тяни-толкай","Непонятоное существо",200)
]

sql='''\
INSERT INTO books(id_author, id_publication, title_book, descr_book,

number_book)
VALUES (?,?,?,?,?)
''‘
cur.executemany(sql,var_list)
Создание и использование  списка из кортежей для заполнения var_list=[		(1,1,

Слайд 10Исполнение и просмотр числа изменений
con.execute('''
UPDATE publication SET name_publication='роман в стихах'
WHERE

id_publication = 3
''')
cur.execute ('''
INSERT INTO publication (name_publication)
VALUES ('поэма для детей')
''')
print(con.total_changes)

Исполнение и просмотр числа измененийcon.execute('''		UPDATE publication SET name_publication='роман в стихах'		WHERE id_publication = 3		''')cur.execute ('''		INSERT INTO publication (name_publication)		VALUES

Слайд 11Вывод элементов по одному
print(cur.execute('''
SELECT * FROM books
'''))
print(cur.fetchone())
print(cur.fetchone())
print(cur.fetchone())
print(cur.fetchone())
print(cur.fetchone())

Вывод элементов по одному	print(cur.execute('''		SELECT * FROM books		'''))	print(cur.fetchone())	print(cur.fetchone())	print(cur.fetchone())	print(cur.fetchone())	print(cur.fetchone())

Слайд 12Использование метода итератора __next__()
print(cur.execute('''SELECT * FROM books'''))
print(cur.__next__())
print(cur.__next__())
print(cur.__next__())
print(cur.__next__())
print(cur.__next__())

Использование метода итератора __next__()print(cur.execute('''SELECT * FROM books'''))	print(cur.__next__())	print(cur.__next__())	print(cur.__next__())print(cur.__next__())	print(cur.__next__())

Слайд 13Вывод через for
print(cur.execute('''SELECT * FROM books'''))
for i in cur:
print("{0}".format(i))

Вывод через for	print(cur.execute('''SELECT * FROM books'''))	for i in cur:				print(

Слайд 14Использование fetchmany
print(cur.execute('''SELECT * FROM books'''))
print(cur.arraysize)
print(cur.fetchmany())
print(cur.fetchmany())
print(cur.fetchmany())
print(cur.fetchmany())

Использование fetchmanyprint(cur.execute('''SELECT * FROM books'''))print(cur.arraysize)print(cur.fetchmany())print(cur.fetchmany())print(cur.fetchmany())print(cur.fetchmany())

Слайд 15Сравнение fetch
cursor.execute("SELECT id, name FROM `table`")
for i in range(cursor.rowcount):

id, name = cursor.fetchone()
print id, name
 
 
cursor.execute("SELECT id, name

FROM `table`")
result = cursor.fetchmany()
while result:
for id, name in result:
print (id, name)
result = cursor.fetchmany()
 
 
cursor.execute("SELECT id, name FROM `table`")
for id, name in cursor.fetchall():
print (id, name)

Сравнение fetchcursor.execute(

Слайд 16Размер массива объектов
print(cur.execute('''SELECT * FROM books'''))
print(cur.arraysize)
print(cur.fetchall())
print(cur.fetchall())# второй fetchall выводит пустой

список

Размер массива объектовprint(cur.execute('''SELECT * FROM books'''))print(cur.arraysize)print(cur.fetchall())print(cur.fetchall())# второй fetchall выводит пустой список

Слайд 17row_factory с Row и обращение по индексам и ключам
con.row_factory=sqlite3.Row
a_list=cur.fetchall()
print(a_list)
print(type(a_list))
print(len(a_list))
print(a_list[0][3])
print(a_list[0]['title_book'])
print(a_list[0]['TITLE_BOOK'])
for i

in a_list[0]:
print(i)
print(a_list[0].keys())

row_factory с Row  и обращение по индексам и ключамcon.row_factory=sqlite3.Rowa_list=cur.fetchall()	print(a_list)print(type(a_list))print(len(a_list))print(a_list[0][3])print(a_list[0]['title_book'])print(a_list[0]['TITLE_BOOK'])for i in a_list[0]:	print(i)		print(a_list[0].keys())

Слайд 18row_factory
Существует возможность изменить это свойство на имя функции, которая принимает

курсор (cur) и исходную строку как кортеж и возвращает измененную

строку результата. Это позволяет, например, получить доступ к столбцам по имени

def dict_factory(cursor, row):
d = {}
for i, col_name in enumerate(cursor.description):
d[col_name[0]] = row[i]
return d
con.row_factory = dict_factory
cur = con.cursor()
cur.execute(''' SELECT * FROM author''')
for i in cur.fetchall():
print(i["author_name"])
cur.close()
con.close()

row_factoryСуществует возможность изменить это свойство на имя функции, которая принимает курсор (cur) и исходную строку как кортеж

Слайд 19def dict_factory(cursor, row):
d = {}
for i,

col_name in enumerate(cursor.description):
d[col_name[0]] = row[i]

d[i]=row[i]
return d

con.row_factory = dict_factory
cur = con.cursor()
cur.execute('''SELECT * FROM author''')
for i in cur.fetchall():
print(i[0], i["author_name"])
def dict_factory(cursor, row):  d = {}  for i, col_name in enumerate(cursor.description):    d[col_name[0]]

Слайд 20con.row_factory = sqlite3.Row
Поддерживает отображающийся доступ по имени столбца, индексу, итерации,

представлению,. Если два объекта Row имеют точно такие же столбцы

и их элементы равны, то они сравниваются как равные.

con.row_factory = sqlite3.Row
cur = con.cursor()
cur.execute(''' SELECT * FROM author''')
a_list=cur.fetchall()
print(type(a_list[0]))
print(len(a_list[0]))
print(a_list[0])
print(a_list[0]['author_name'])
print(a_list[0].keys())

con.row_factory = sqlite3.RowПоддерживает отображающийся доступ по имени столбца, индексу, итерации, представлению,. Если два объекта Row имеют точно

Слайд 21text_factory работа с кодировками и обработка текста
con.text_factory=bytes # представление в

байтовом виде
print(cur.execute('''SELECT * FROM books '''))
print(cur.fetchone())

text_factory  работа с кодировками и обработка текстаcon.text_factory=bytes # представление в байтовом видеprint(cur.execute('''SELECT * FROM books	'''))print(cur.fetchone())

Слайд 22Пользовательская text_factory
con.text_factory=lambda s: str(s, "utf-8")
print(cur.execute("SELECT * FROM books"))
print(cur.fetchone())

Пользовательская text_factorycon.text_factory=lambda s: str(s,

Слайд 23def my01(input):
return input.decode('cp1251')
con.text_factory = my01

def my01(input):    return input.decode('cp1251')con.text_factory = my01

Слайд 24text_factory
Свойство используется для управления возвращаемыми текстовыми значениями

text_factoryСвойство используется для управления возвращаемыми текстовыми значениями

Слайд 25Удаление записей
>>> cur.execute("INSERT INTO author VALUES (NULL,'Маршак','Автор стихов')")

0x1007ebf80>
 
>>> cur.execute("DELETE FROM author WHERE name_author='Маршак'")

>>> cur.fetchall()
[]
 
>>>

cur.execute("SELECT * FROM author")

>>> cur.fetchall()
[(1, 'Чуковский', 'Автор множества книг для детей')]


Слайд 26Отмена действий rollback()
var1=("Маршак",)
sql1='''INSERT INTO author (name_author) VALUES(?) '''
cur.execute(sql1,var1)
cur.execute("SELECT * FROM

author")
print(cur.fetchall())
con.rollback()
cur.execute("SELECT * FROM author")
print(cur.fetchall())

Отмена действий rollback()var1=(

Слайд 27Получение состояния транзакции
con.in_transaction – True – есть активная транзакция, False

- нет такой


Получение состояния транзакцииcon.in_transaction – True – есть активная транзакция, False - нет такой

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика