Python для начинающих
1.1K subscribers
305 photos
3 videos
232 files
62 links
Python для начинающих
Download Telegram
Как работать с изображениями с помощью PIL и OpenCV
Привет, дорогие читатели! Сегодня я расскажу вам о мире обработки изображений в Python с помощью двух популярных библиотек: PIL (Python Imaging Library) и OpenCV. Эти инструменты позволяют нам легко и эффективно работать с изображениями, и вы удивитесь, насколько это просто и увлекательно!

Начнем с PIL, которая сейчас известна как Pillow. Это мощная библиотека, легко справляющаяся с множеством задач: от базовой загрузки и сохранения изображений до более сложных операций, таких как изменение размера и фильтрация. Например, чтобы начать работать с картинкой, её нужно всего лишь загрузить:

from PIL import Image

# Загрузка изображения
img = Image.open("example.jpg")

# Вывод размерности изображения
print(f"Image size: {img.size}")

# Сохранение изображения в другом формате
img.save("example.png")


Вот так просто вы уже можете открыть изображение, узнать его размер и даже сохранить в другом формате. А как насчет фильтров? Давайте попробуем применить эффект размытия с помощью встроенного фильтра:

from PIL import ImageFilter

# Применение размытия
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save("blurred_example.jpg")


Теперь представьте, что вам нужно не просто отредактировать изображения, но и обрабатывать видео в реальном времени. Здесь на помощь приходит OpenCV. Эта библиотека подходит для более сложных вычислительных задач и поддерживает работу с видео. Начнем с простого примера: чтение и отображение изображения.

import cv2

# Загрузка изображения
img_cv = cv2.imread("example.jpg")

# Отображение изображения в отдельном окне
cv2.imshow('Displayed Image', img_cv)
cv2.waitKey(0)
cv2.destroyAllWindows()


Совсем несложно, правда? OpenCV также обладает мощным функционалом для таких задач, как преобразование в градации серого, обнаружение краев и многое другое. Давайте попробуем преобразовать наше изображение в оттенки серого:

# Преобразование изображения в градации серого
gray_img = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray_example.jpg", gray_img)


А для более динамичных задач, как, например, работа с видео, вы можете использовать OpenCV для захвата и отображения потокового видео:

cap = cv2.VideoCapture(0)  # Открытие камеры

while True:
ret, frame = cap.read()
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('Video Stream', gray_frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()


Пара строк кода — и вы уже обрабатываете видеопоток в режиме реального времени!

Использование таких библиотек, как PIL и OpenCV, открывает множество возможностей для обработки изображений. От редактирования фото до сложных аудиовизуальных проектов — всё это по силам каждому, вооружившемуся базовыми знаниями Python и хорошей дозой креативности! Удачи в ваших экспериментах и до новых запусков!
👍2🔥2
Использование регулярных выражений для поиска и замены
Привет, друзья! Сегодня мы с вами отправимся в захватывающее путешествие по миру регулярных выражений в Python. Эти маленькие магические заклинания помогают нам искать, извлекать и заменять текстовые данные с фантастической точностью и ловкостью.

Регулярные выражения в Python реализованы в модуле re. Представьте, что вам нужно найти все email-адреса в тексте. Мы могли бы обратиться к re, как к верному спутнику в этом деле. С помощью регулярных выражений мы сможем выудить их за считаные секунды!

Давайте рассмотрим маленький примерчик:

import re

text = "Contact us at: info@example.com or support@site.org"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b', text)
print(emails)


Что тут происходит? С помощью функции re.findall мы запускаем поиск по строке text. Наше "заклинание" r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b' выглядит как нечто таинственное, но на самом деле оно просто описывает, как выглядит email. И вот, мы поймали двух хитрецов — наши адреса!

Но поиск — это лишь полдела, часто нам хочется не только найти, но и подправить те самые строки. Допустим, мы решили, что все упоминания "test" в тексте надо заменить на "exam". Что ж, re.sub нам в помощь!

pattern = r'test'
replacement = 'exam'
text = "This is just a test."
new_text = re.sub(pattern, replacement, text)
print(new_text)


И вот, наш тест превратился в экзамен, а мы даже не успели испугаться! re.sub позволяет заменить все вхождения заданного шаблона на то, что мы пожелаем.

Помните главное: регулярные выражения — это не столько про сложность, сколько про простоту в повторяющихся задачах. Осталось только позволить вашему любопытству взять верх, ведь возможности re безграничны. От простого поиска до сложных операций — когда-то сложная задача может стать увлекательной игрой.

Вот и все на сегодня! Надеюсь, вы получили удовольствие и вдохновение попробовать свои силы с регулярными выражениями. Они могут привести небольшую магию в ваш код, позволяя вам писать более эффективные и лаконичные программы. До встречи в следующем посте!
👍5🔥2
Работа с электронными таблицами: Управление Excel файлами в Python
Привет, друзья! Когда речь заходит о Python, его возможности почти безграничны, и сегодня я хочу рассказать вам о том, как с помощью Python можно управлять Excel файлами. Наверняка многие из вас сталкивались с необходимостью обработки данных в Excel, будь то анализ финансовых таблиц или учет инвентаря. С помощью Python и библиотеки openpyxl эта задача превращается в увлекательное и простое приключение!

openpyxl — это мощная библиотека для работы с Excel файлами формата .xlsx. Она позволяет создавать, редактировать и даже стилизовать таблицы всего за несколько строк кода. Давайте разберемся, как это работает на практике.

Для начала установим библиотеку, если она еще не установлена:

pip install openpyxl


Теперь давайте создадим новый Excel файл и добавим в него немного данных. Начнем с создания рабочей книги и добавления данных в ячейки:

from openpyxl import Workbook

# Создаем новую рабочую книгу
wb = Workbook()

# Активируем лист
ws = wb.active

# Добавляем данные
ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws['A2'] = 'Alice'
ws['B2'] = 28
ws['A3'] = 'Bob'
ws['B3'] = 34

# Сохраняем файл
wb.save('sample.xlsx')


Этот небольшой скрипт создает файл sample.xlsx с небольшой таблицей. Но это только начало!

Теперь, когда у нас есть базовые данные, давайте попробуем изменить файл, добавив вычисление среднего возраста:

from openpyxl import load_workbook

# Загружаем существующую книгу
wb = load_workbook('sample.xlsx')

# Активируем лист
ws = wb.active

# Добавляем формулу для среднего возраста
ws['B4'] = '=AVERAGE(B2:B3)'

# Сохраняем изменения
wb.save('sample.xlsx')


Вот так просто мы добавили формулу, и теперь Excel сам посчитает средний возраст за нас. Но что, если вам нужно что-то более захватывающее? Например, изменить стиль ячеек.

from openpyxl.styles import Font

# Изменим шрифт заголовков на жирный
bold_font = Font(bold=True)
ws['A1'].font = bold_font
ws['B1'].font = bold_font

# Сохраняем файл
wb.save('styled_sample.xlsx')


Теперь наши заголовки выделены жирным шрифтом, что добавляет таблице немного стиля!

Итак, мы прошли всего лишь через несколько возможностей, которые предлагает openpyxl. Эта библиотека открывает двери к автоматизации задач с электронными таблицами, будь то создание отчетов или обработка больших объемов данных.

Следите за обновлениями, ведь впереди у нас еще много интересных тем, связанных с Python!
👍3🔥3
Как записывать и воспроизводить видео с помощью OpenCV
Привет, друзья! Сегодня мы погрузимся в увлекательный мир работы с видео в Python, используя мощный и популярный модуль OpenCV. Как известно, OpenCV - это библиотека компьютерного зрения, которая открывает перед нами безграничные возможности в обработке изображений и видео. Давайте вместе разберёмся, как можно записывать и воспроизводить видео с помощью этой замечательной библиотеки!

Начнем с установки. Убедитесь, что у вас установлен OpenCV. Если нет, то его очень легко установить через pip:

pip install opencv-python


Теперь, когда у нас есть всё необходимое, давайте приступим к записи видео. Представьте, что у вас есть желание запечатлеть свои умения в кулинарии или же записать видео с вашей веб-камеры. Вот как это можно сделать:

import cv2

# Открываем доступ к камере. Номер "0" означает, что мы используем первую найденную камеру.
cap = cv2.VideoCapture(0)

# Определяйте кодек и создавайте объект записи видео
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

while(cap.isOpened()):
ret, frame = cap.read()
if ret:
# Записываем текущий кадр
out.write(frame)

# Показываем текущий кадр
cv2.imshow('frame', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break

# Освобождаем все ресурсы
cap.release()
out.release()
cv2.destroyAllWindows()


Этот скрипт захватывает видео с вашей веб-камеры и сохраняет его в файл output.avi. Здесь мы используем VideoCapture() для подключения к камере, а объект VideoWriter() — для записи видео. Кодек 'XVID' отвечает за формат видео, а параметры 20.0 и (640, 480) определяют частоту кадров и размер видео.

Теперь давайте посмотрим, как можно воспроизвести записанное видео. Это также достаточно просто:

import cv2

# Открываем сохранённое видео
cap = cv2.VideoCapture('output.avi')

while(cap.isOpened()):
ret, frame = cap.read()
if ret:
cv2.imshow('frame', frame)

if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break

# Освобождаем ресурсы
cap.release()
cv2.destroyAllWindows()


Воспроизведение видео очень похоже на его запись. Мы снова используем VideoCapture(), но теперь передаем в него имя файла нашего видео. А затем в цикле читаем и показываем каждый кадр.

Вот и всё, друзья! Теперь у вас есть базовые навыки работы с видео в OpenCV. Мы рассмотрели, как захватывать видео с камеры и как воспроизводить видеофайлы, используя Python. Надеюсь, вам было интересно и полезно, и вы смогли глубже погрузиться в возможности OpenCV.
🔥2👍1
Работа с сетевыми приложениями: Основы сокетов в Python
Привет, друзья! Сегодня я хочу поговорить о теме, которая может быть как пугающей, так и чрезвычайно увлекательной — это сокеты в Python. Представьте себе, что сеть — это огромный арочный мост, а сокеты — это машины, которые по нему передвигаются. Понимание того, как эти "машины" работают, откроет для вас множество дверей в мир сетевых приложений.

Итак, давайте разберемся, что же такое сокеты. Сам по себе сокет — это точка конца связи в сети, которая позволяет обмениваться данными между различными устройствами. Python, в своем фирменном стиле, упрощает работу с сокетами благодаря удобному модулю socket.

Начнем с простого примера — создание клиент-сервера. Сервер будет ждать подключения от клиента, а клиент будет передавать сообщение серверу. Чтобы обеспечить это чудо общения, начнем с создания сервера:

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()

print('Server is waiting for a connection...')
connection, address = server_socket.accept()
print(f'Connected to {address}')

data = connection.recv(1024).decode()
print(f'Received: {data}')

connection.close()
server_socket.close()


Здесь мы создаем серверный сокет, который привязывается к "localhost" и прослушивает порт 12345. Как только клиент подключается, сокет принимает это соединение и получает данные.

Теперь давайте создадим клиента, который будет отправлять сообщение серверу:

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))

client_socket.sendall('Hello, Server!'.encode())
client_socket.close()


Клиент создает сокет, который подключается к тому же адресу и порту, что и сервер, после чего отправляет сообщение.

Как видите, основная концепция довольно проста: сервер ждет, клиент подключается и отправляет сообщение. Но, конечно, за этими простыми строчками кода стоят более сложные механизмы, которые обеспечивают надежность и скорость передачи данных.

Сокеты в Python — это как волшебная палочка для создания ваших собственных сетевых приложений. Используя их, вы можете построить все что угодно: от небольших чат-ботов до сложных серверных архитектур. Так что, если вы еще не пробовали, самое время окунуться в этот удивительный мир!

Надеюсь, этот небольшой экскурс в мир сокетов вдохновит вас углубиться в изучение сетевого программирования. До новых встреч в нашем блоге!
👍4🔥1
Как следить за вашим кодом с использованием логирования
Привет, друзья! Сегодня я поделюсь с вами увлекательным путешествием в мир логирования на Python. Вы когда-нибудь задумывались, как следить за работой вашего кода и быстро находить ошибки? Логирование – это ваш верный помощник в этом деле!

Когда я только начинал свой путь программиста, одной из магических техник, которые я узнал, стало логирование. Представьте себе детективный сериал, где главный герой анализирует улики, чтобы разгадать сложное дело. Вот примерно так и работает логирование, помогая "разобраться" в вашем коде.

Для начала, познакомимся с модулем logging – настоящей находкой для программистов на Python. Им можно пользоваться как на маленьких скриптах, так и в больших приложениях. Давайте посмотрим, как это работает.

import logging

logging.basicConfig(level=logging.INFO)

def calculate_sum(a, b):
logging.info(f"Calculating sum of {a} and {b}")
return a + b

result = calculate_sum(5, 7)
logging.info(f"Result is {result}")


В этом простом примере мы использовали logging.info() для записи информационных сообщений. Это как дневник вашего кода, в который вы вносите важную информацию.

Модуль logging поддерживает различные уровни логирования: DEBUG, INFO, WARNING, ERROR и CRITICAL. Каждый уровень соответствует своей важности. Например, DEBUG используется для мелочей, INFO – для общей информации, а ERROR – для записи ошибок.

Логирование позволяет не только следить за выполняемыми инструкциями, но и упростить отладку и поддержку кода. Представьте, что вы запустили программу, и на выходе получили неожиданную ошибку. Вместо того чтобы мучительно гадать, где произошел сбой, вы просто открываете лог-файл и находите там все необходимые улики.

import logging

logging.basicConfig(filename='app.log', level=logging.ERROR)

def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
logging.error("Tried to divide by zero")
return None
return result

divide(10, 0)


Здорово, правда? При возникновении ошибки мы записываем ее в файл app.log, и теперь у нас есть свидетельства о каждой неудавшейся операции.

Логирование – это также отличная возможность для документирования процесса разработки. В будущем, возможно, вам или вашим коллегам придется поддерживать проект. Наличие логов поможет быстро погрузиться в суть работы системы.

Важно помнить, что чрезмерное использование логирования может засорять ваши файлы ненужной информацией. Поэтому разумно выбирайте уровень детали для каждого этапа вашей программы.

Итак, подводя итог: логирование – это как ваш второй глаз, который всегда смотрит на то, что происходит в вашем коде. Оно помогает находить ошибки, улучшать производительность и поддерживать ваш проект в отличном состоянии. Так что вперед, добавляйте это мощное средство в свой арсенал программирования!
🔥2👍1
Советы по оптимизации и ускорению Python-программ
## Советы по оптимизации и ускорению Python-программ

Привет, дорогие читатели! Сегодня я расскажу вам, как сделать ваши Python-программы быстрее и эффективнее, не прилагая титанических усилий. Если вы новичок и чувствуете, что ваш код движется как черепаха, не переживайте, мы разгоняемся!

### Используйте встроенные функции

Одним из ваших лучших друзей в Python является его богатая библиотека встроенных функций. Они написаны на языке C и невероятно оптимизированы. Вместо того чтобы реализовывать свой счетчик элементов в списке, используйте len(). Нужен сумматор? Берите sum(). Простые улучшения, но какие результаты!

# Вместо этого:
count = 0
for i in my_list:
count += 1

# Лучше так:
count = len(my_list)


### Модуль collections

Для более сложных структур данных, таких как счета или очереди, используйте модуль collections. К примеру, deque из этого модуля обеспечивает более быструю вставку и удаление элементов, чем стандартный список.

from collections import deque

d = deque([1, 2, 3])
d.append(4) # Быстрее, чем list.append()
d.popleft() # Быстрее, чем list.pop(0)


### Листовые включения и генераторы

Списковые включения не только более "питоничны", но и работают быстрее, чем стандартные циклы. А если нужно обрабатывать большие данные, генераторы помогут вам сэкономить память.

# Списковое включение:
squares = [x**2 for x in range(10)]

# Генератор:
squares_gen = (x**2 for x in range(10))


### Следите за областями видимости

Локальные переменные обрабатываются быстрее, чем глобальные. Если можете, используйте локальные переменные и избегайте доступа к глобальным переменным в циклах.

### Модуль numpy

Когда дело касается математических операций и больших объёмов данных, модуль numpy - ваш путь. Он предлагает мощные инструменты для работы с многомерными массивами и матрицами.

import numpy as np

my_array = np.array([1, 2, 3])
my_array *= 2 # Элементы массива умножаются на 2


### Профилирование

Вам нужно понять, где у вас возникают замедления. Для этого используйте модуль cProfile, чтобы оценивать производительность. Это поможет локализовать узкие места в вашем коде.

import cProfile

def my_function():
# ваш код здесь

cProfile.run('my_function()')


### Заключение

Все эти приемы помогут ускорить ваш Python-код и сделать его более эффективным. Не бойтесь экспериментировать и искать оптимальные решения для ваших задач. Python – это не только про легкость написания кода, но и про его улучшение. Удачного программирования!
🔥3👍1
- Введение в библиотеку async для работы с асинхронностью
# Введение в библиотеку asyncio: Асинхронность в Python

Приветствую всех начинающих покорителей Python! Сегодня мы поговорим о магии асинхронного программирования, используя библиотеку asyncio. Вы наверняка слышали такие загадочные слова, как "асинхронность" и "конкурентность". Эти термины могут звучать пугающе, но на самом деле они скрывают за собой мощные инструменты для улучшения производительности ваших программ.

Итак, давайте начнем наше погружение в мир asyncio. Это стандартная библиотека Python, которая позволяет писать код, способный выполнять несколько операций одновременно, не создавая при этом множество потоков. Представьте себе повара на кухне, который параллельно нарезает овощи и варит суп — вот так примерно работает асинхронность!

## Основы работы с asyncio

Первое, что нужно знать, — это ключевые слова async и await. Они открывают двери в асинхронный мир. Давайте взглянем на простой пример:

import asyncio

async def cook_vegetables():
print("Starting to cut vegetables...")
await asyncio.sleep(2)
print("Vegetables are ready!")

async def boil_soup():
print("Boiling the soup...")
await asyncio.sleep(3)
print("Soup is ready!")

async def main():
await asyncio.gather(cook_vegetables(), boil_soup())

asyncio.run(main())


В этом примере функции cook_vegetables() и boil_soup() выполняются одновременно. Мы используем asyncio.sleep() как симуляцию задержки, думая о ней как о времени, необходимом для выполнения этих задач. asyncio.gather() позволяет запустить обе задачи и дождаться их завершения.

## Преимущества асинхронности

Теперь, когда вы видели базовый пример, давайте обсудим, почему асинхронность важна. Вообще, асинхронное программирование идеально подходит для задач, где нужно ждать — например, ожидание ответа от веб-сервера или базы данных. Вместо того чтобы блокировать основной поток ожиданием, вы можете выполнять другие полезные задачи.

## Применение asyncio

Представьте, что вы пишете чат-бота, который должен отвечать на вопросы пользователей, обрабатывать команды и, возможно, даже предсказывать погоду — все одновременно. С помощью asyncio бот сможет обрабатывать многие запросы одновременно, не заставляя пользователей ждать.

## Заключение

Асинхронное программирование на Python с библиотекой asyncio — это больше, чем просто модное слово. Это инструмент, который может значительно улучшить реактивность и распределение ресурсов в ваших приложениях. Освоение базовых концепций, таких как async и await, откроет для вас двери к созданию более эффективных и масштабируемых программ.
👍1🔥1
- Создание веб-форм и их обработка на Python
Создание веб-форм и их обработка на Python: просто и увлекательно

Когда речь идет о создании динамических веб-приложений, формы играют ключевую роль. Они являются мостом между пользователем и программой, предоставляя возможность ввода информации. Сегодня мы погрузимся в мир Python и рассмотрим, как с легкостью создавать и обрабатывать веб-формы, используя эту популярную язык программирования.

Итак, начнем с одного из самых популярных и удобных фреймворков для веб-разработки на Python - Flask. Этот фреймворк минималистичен и прост в изучении, но предоставляет все необходимые инструменты для создания мощных веб-приложений. Если вы еще не установили Flask, сделайте это с помощью команды:

pip install flask


Теперь давайте разберем, как создать простую форму, используя Flask. Вначале создадим основной файл нашего приложения и назовем его app.py:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
user_name = request.form['name']
return f'Привет, {user_name}!'
return render_template('index.html')

if __name__ == '__main__':
app.run(debug=True)


Этот код определяет маршрут '/', обрабатывающий как GET, так и POST запросы. Если на сервер поступает POST запрос, извлекается значение, введенное пользователем в поле формы, и выводится приветственное сообщение.

Теперь создадим шаблон HTML-файла index.html, который будет отображаться пользователю:

<!doctype html>
<html>
<head><title>Приветственное приложение</title></head>
<body>
<form method="POST">
<label for="name">Введите ваше имя:</label>
<input type="text" id="name" name="name">
<input type="submit" value="Отправить">
</form>
</body>
</html>


Все довольно просто: HTML форма с одним текстовым полем для ввода имени и кнопкой для отправки данных.

Теперь, когда вы запустите ваш Flask-сервер, перейдите в браузере по адресу http://127.0.0.1:5000/, вы увидите форму, готовую обрабатывать ваши данные.

Помимо стандартных методов Flask, Python предлагает множество библиотек для работы с формами и обработкой данных. Одним из таких решений является WTForms - библиотека, позволяющая создавать формы более гибким образом, поддерживающая валидацию данных и многое другое.

pip install flask-wtf


Flask-WTF значительно упрощает управление формами. Снова обновим наш app.py:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class NameForm(FlaskForm):
name = StringField('Ваше имя', validators=[DataRequired()])
submit = SubmitField('Отправить')


Используя Flask-WTF, мы создаем класс NameForm, который определяет поле для ввода имени и кнопку отправки. Формы теперь обрабатываются сервером автоматически.

Таким образом, мы рассмотрели основные принципы и инструменты создания веб-форм на Python. Вместе с Flask и другими библиотеками он обладает мощными инструментами для работы с веб-приложениями, даже для таких начинающих разработчиков, как вы. Так что берите на вооружение знания и создавайте свои уникальные приложения!
🔥2👍1
- Взаимодействие с базами данных SQLAlchemy
Здравствуй, дорогой читатель моего блога! Сегодня мы окунемся в мир взаимодействия с базами данных при помощи одного из самых мощных инструментов в арсенале Python — SQLAlchemy. Как говорится, если вы хотите подружиться с базами данных, SQLAlchemy — ваш лучший приятель.

Итак, представьте себе следующий сценарий: вы создаете приложение, которому необходимо не только сохранять данные, но и делать это эффективно и с минимумом усилий. Можно, конечно, общаться с базой данных через сырые SQL-запросы, но зачем усложнять свою жизнь, если на помощь приходит ORM (Object Relational Mapping)? Именно так, SQLAlchemy позволяет связать объекты Python с таблицами базы данных и манипулировать данными, как будто это обычные объекты.

Начнем с простого примера, как подключиться к базе данных.

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db', echo=True)


С помощью create_engine мы создаем движок, который управляет соединениями с базой данных. Здесь мы используем SQLite, но SQLAlchemy поддерживает множество других СУБД, таких как PostgreSQL, MySQL и другие.

Теперь давайте создадим модель, которая будет отражать нашу таблицу в базе данных. Предположим, мы хотим работать с книгами.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Book(Base):
__tablename__ = 'books'

id = Column(Integer, primary_key=True)
title = Column(String)
author = Column(String)


Здесь мы определили класс Book, который включает все необходимые столбцы таблицы: id, title и author. Каждый из них сопоставлен с определенным типом данных.

После того как модель готова, давайте создадим таблицу в нашей базе данных:

Base.metadata.create_all(engine)


Теперь, чтобы добавить данные, воспользуемся сессиями. В SQLAlchemy сессии позволяют выполнять операции с базой данных:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

new_book = Book(title='Python для начинающих', author='Иван Иванов')
session.add(new_book)
session.commit()


Создаем новую сессию, добавляем объект new_book и подтверждаем изменения, сохраняя книгу в базе данных. Все легко и просто!

Но что насчет запроса данных? SQLAlchemy также позволяет эффективно и элегантно находить необходимую информацию:

books = session.query(Book).filter_by(author='Иван Иванов').all()
for book in books:
print(book.title)


Вот так просто вы можете извлечь все книги, написанные автором Иван Иванов, и вывести их названия.

SQLAlchemy — это действительно мощный инструмент, который делает работу с базами данных в Python простой и, что самое главное, более понятной. Надеюсь, эта вводная часть вдохновит вас воспользоваться всеми преимуществами, которые предлагает этот фреймворк. До новых встреч на страницах моего блога!
👍51🔥1