Слайд 2
![ORM Object Relational Mapping (Объектно-реляционное отображение) Объектно-реляционное отображение — это](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-1.jpg)
ORM
Object Relational Mapping (Объектно-реляционное отображение)
Объектно-реляционное отображение — это технология программирования, которая связывает базы
данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как проприетарные, так и свободные реализации этой технологии.
Слайд 3
![Python csv](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-2.jpg)
Слайд 4
![Атрибуты при открытии файла](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-3.jpg)
Атрибуты при открытии файла
Слайд 5
![Запись d1={'name':'Pert','surname':'Romanov','age':44} d2={'name':'Vlodimir','surname':'Lenin','age':34} d3={'name':'Lev','surname':'Tolstoy','age':74} d_list=[d1,d2,d3] for i in d_list: print(i) write_csv(i)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-4.jpg)
Запись
d1={'name':'Pert','surname':'Romanov','age':44}
d2={'name':'Vlodimir','surname':'Lenin','age':34}
d3={'name':'Lev','surname':'Tolstoy','age':74}
d_list=[d1,d2,d3]
for i in d_list:
print(i)
write_csv(i)
Слайд 6
![import csv def write_csv(data): with open('writers.csv','a') as file: writer=csv.writer(file) #writer=csv.writer(file,delimiter=',') #writer=csv.writer(file, dialect='Excel') #writer.writerow((data['name'],data['surname'],data['age'])) writer.writerow([data['name'],data['surname'],data['age']])](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-5.jpg)
import csv
def write_csv(data):
with open('writers.csv','a') as file:
writer=csv.writer(file)
#writer=csv.writer(file,delimiter=',')
#writer=csv.writer(file, dialect='Excel')
#writer.writerow((data['name'],data['surname'],data['age']))
writer.writerow([data['name'],data['surname'],data['age']])
Слайд 7
![def write_csv2(data): with open('writers2.csv','a') as file: order=['name','surname','age'] writer=csv.DictWriter(file, fieldnames=order) writer.writerow(data)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-6.jpg)
def write_csv2(data):
with open('writers2.csv','a') as file:
order=['name','surname','age']
writer=csv.DictWriter(file, fieldnames=order)
writer.writerow(data)
Слайд 8
![Чтение def open_csv(): with open('writers2.csv','r') as file: reader=csv.DictReader(file) for i in reader: print(i)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-7.jpg)
Чтение
def open_csv():
with open('writers2.csv','r') as file:
reader=csv.DictReader(file)
for i in reader:
print(i)
Слайд 9
![def open_csv(): with open('writers2.csv','r') as file: order=['name','surname','age'] reader=csv.DictReader(file, fieldnames=order) for i in reader: print(i)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-8.jpg)
def open_csv():
with open('writers2.csv','r') as file:
order=['name','surname','age']
reader=csv.DictReader(file, fieldnames=order)
for i in reader:
print(i)
Слайд 10
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-9.jpg)
Слайд 11
![Скрайбинг текста из википедии](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-10.jpg)
Скрайбинг текста из википедии
Слайд 12
![SQLite](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-11.jpg)
Слайд 13
![pip install peewee](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-12.jpg)
Слайд 14
![pip install flask-peewee](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-13.jpg)
Слайд 15
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-14.jpg)
Слайд 16
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-15.jpg)
Слайд 17
![null=False – возможно ли хранение null-значений; index=False – создавать ли](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-16.jpg)
null=False – возможно ли хранение null-значений;
index=False – создавать ли индекс для данного столбца
в базе;
unique=False – создавать ли уникальный индекс для данного столбца в базе; verbose_name=None – строка для человекопонятного представления поля;
help_text=None – строка с вспомогательным текстом для поля;
db_column=None – строка, явно задающая название столбца в базе для данного поля, используется например при работе с legacy базой данных;
default=None – значение по-умолчанию для полей класса при инстанцировании;
choices=None – список или кортеж двухэлементных кортежей, где первый элемент – значение для базы, второй – отображаемое значение (аналогично джанге);
primary_key=False – использовать ли данное поле, как первичный ключ;
sequence=None – последовательность для наполнения поля (удостоверьтесь, что бекэнд поддерживает такую функциональность);
Слайд 18
![Метаданные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-17.jpg)
Слайд 19
![Типы полей 1](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-18.jpg)
Слайд 20
![Типы полей 2](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-19.jpg)
Слайд 21
![Типы полей 3](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-20.jpg)
Слайд 22
![Типы полей 4](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-21.jpg)
Слайд 23
![Специальные параметры полей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-22.jpg)
Специальные параметры полей
Слайд 24
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-23.jpg)
Слайд 25
![https://sqlitebrowser.org/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-24.jpg)
https://sqlitebrowser.org/
Слайд 26
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-25.jpg)
Слайд 27
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-26.jpg)
Слайд 28
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-27.jpg)
Слайд 29
![Использование save](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-28.jpg)
Слайд 30
![Использование create](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-29.jpg)
Слайд 31
![Изменение записей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-30.jpg)
Слайд 32
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-31.jpg)
Слайд 33
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-32.jpg)
Слайд 34
![Извлечение одной записи SelectQuery.get()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-33.jpg)
Извлечение одной записи SelectQuery.get()
Слайд 35
![Извлечение нескольких записей](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-34.jpg)
Извлечение нескольких записей
Слайд 36
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-35.jpg)
Слайд 37
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-36.jpg)
Слайд 38
![Использование join](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-37.jpg)
Слайд 39
![Сортировка по алфавиту SelectQuery.order_by()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-38.jpg)
Сортировка по алфавиту
SelectQuery.order_by()
Слайд 40
![Упорядочивание по возрасту](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-39.jpg)
Упорядочивание по возрасту
Слайд 41
![Фильтр по дате](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-40.jpg)
Слайд 42
![or не всегда работает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-41.jpg)
Слайд 43
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-42.jpg)
Слайд 44
![Персонажи, начинающиеся с буквы g](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-43.jpg)
Персонажи, начинающиеся с буквы g
Слайд 45
![SelectQuery.group_by()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-44.jpg)
Слайд 46
![SelectQuery.having()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-45.jpg)
Слайд 47
![SelectQuery.limit()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-46.jpg)
Слайд 48
![SelectQuery.offset()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-47.jpg)
Слайд 49
![Python Postgre](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-48.jpg)
Слайд 50
![https://www.postgresql.org/download/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-49.jpg)
https://www.postgresql.org/download/
Слайд 51
![http://postgresql.ru.net/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-50.jpg)
http://postgresql.ru.net/
Слайд 52
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-51.jpg)
Слайд 53
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-52.jpg)
Слайд 54
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-53.jpg)
Слайд 55
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-54.jpg)
Слайд 56
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-55.jpg)
Слайд 57
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-56.jpg)
Слайд 58
![pip install psycopg2](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-57.jpg)
Слайд 59
![pip install psycopg2-binary](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-58.jpg)
pip install psycopg2-binary
Слайд 60
![pip freeze](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-59.jpg)
Слайд 61
![Чтение csv](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-60.jpg)
Слайд 62
![Соединение с БД и создание таблицы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-61.jpg)
Соединение с БД и создание таблицы
Слайд 63
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-62.jpg)
Слайд 64
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-63.jpg)
Слайд 65
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-64.jpg)
Слайд 66
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-65.jpg)
Слайд 67
![db.atomic снижение нагрузки при записи БД](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-66.jpg)
db.atomic снижение нагрузки при записи БД
Слайд 68
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-67.jpg)
Слайд 69
![Наследование в ORM psql_db = PostgresqlDatabase('my_database', user='postgres') class BaseModel(Model): pass](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-68.jpg)
Наследование в ORM
psql_db = PostgresqlDatabase('my_database', user='postgres')
class BaseModel(Model):
pass
class
Meta:
database = psql_db
class User(BaseModel):
username = CharField()
Слайд 70
![MySQL](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-69.jpg)
Слайд 71
![Коннектор https://dev.mysql.com/downloads/connector/python/2.0.html](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-70.jpg)
Коннектор
https://dev.mysql.com/downloads/connector/python/2.0.html
Слайд 72
![https://www.mysql.com/downloads/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-71.jpg)
https://www.mysql.com/downloads/
Слайд 73
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-72.jpg)
Слайд 74
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-73.jpg)
Слайд 75
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-74.jpg)
Слайд 76
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-75.jpg)
Слайд 77
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-76.jpg)
Слайд 78
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-77.jpg)
Слайд 79
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-78.jpg)
Слайд 80
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-79.jpg)
Слайд 81
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-80.jpg)
Слайд 82
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-81.jpg)
Слайд 83
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-82.jpg)
Слайд 84
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-83.jpg)
Слайд 85
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-84.jpg)
Слайд 86
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-85.jpg)
Слайд 87
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-86.jpg)
Слайд 88
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-87.jpg)
Слайд 89
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-88.jpg)
Слайд 90
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-89.jpg)
Слайд 91
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-90.jpg)
Слайд 92
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-91.jpg)
Слайд 93
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-92.jpg)
Слайд 94
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-93.jpg)
Слайд 95
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-94.jpg)
Слайд 96
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-95.jpg)
Слайд 97
![https://dev.mysql.com/downloads/connector/python/2.0.html](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-96.jpg)
https://dev.mysql.com/downloads/connector/python/2.0.html
Слайд 98
![Работа в командной строке](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-97.jpg)
Работа в командной строке
Слайд 99
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-98.jpg)
Слайд 100
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-99.jpg)
Слайд 101
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-100.jpg)
Слайд 102
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-101.jpg)
Слайд 103
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-102.jpg)
Слайд 104
![pip install pymysql](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-103.jpg)
Слайд 105
![pip install mysqlclient](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-104.jpg)
Слайд 106
![MySQLdb1 – не совместим пока с 3 MySQLdb2 - не](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-105.jpg)
MySQLdb1 – не совместим пока с 3
MySQLdb2 - не совместим пока
с 3
moist - будет
Слайд 107
![Совместимые с 3 mysql-connector-python pymysql CyMySQL mysqlclient](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/246614/slide-106.jpg)
Совместимые с 3
mysql-connector-python
pymysql
CyMySQL
mysqlclient