Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Какой вариант кода является верным?
Anonymous Quiz
64%
1
2%
2
12%
3
10%
4
7%
Никакой
5%
Не знаю
👍4
Python Hub - сборище Питонистов
Photo
Разбор 😎

Разбора не будет. Это аксиома)

Аксиома - исходное положение какой-либо теории, принимаемое в рамках данной теории истинным без требования доказательства
👍4🗿2
SQL вставка внешних ключей в таблицу при помощи Python

Подготовка базы данных

Прежде чем начать вставку внешних ключей, необходимо подготовить базу данных и создать таблицы, между которыми мы будем устанавливать связи. Рассмотрим простой пример двух таблиц: authors и books. Таблица authors будет содержать информацию об авторах, а таблица books - информацию о книгах, написанных этими авторами. Для начала создадим эти таблицы с использованием языка SQL.

CREATE TABLE authors (
author_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);

CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author_id INT,
FOREIGN KEY (author_id) REFERENCES authors (author_id)
);


Вставка данных и внешних ключей с помощью Python 🐍

Теперь, когда наша база данных готова, мы можем перейти к вставке данных и внешних ключей с помощью Python. Для этого нам понадобится библиотека psycopg2, которая позволяет взаимодействовать с PostgreSQL базой данных. Убедитесь, что она установлена:

pip install psycopg2


Далее, напишем скрипт на Python, который будет вставлять данные в таблицы authors и books, устанавливая соответствующие внешние ключи.

import psycopg2

# Соединение с базой данных
conn = psycopg2.connect(
dbname="your_db_name",
user="your_db_user",
password="your_db_password",
host="your_db_host",
port="your_db_port"
)
cursor = conn.cursor()

# Вставка данных в таблицу authors
cursor.execute("INSERT INTO authors (name) VALUES (%s) RETURNING author_id", ("J.K. Rowling",))
author_id = cursor.fetchone()[0]

#Вставка данных в таблицу books с указанием внешнего ключа
cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Harry Potter", author_id))

# Сохранение изменений и закрытие соединения
conn.commit()
cursor.close()
conn.close()


Проверка и управление целостностью данных 🛡

Внешние ключи помогают поддерживать целостность данных в базе данных. Например, они не позволяют вставлять в таблицу books значения author_id, которых нет в таблице authors. Рассмотрим, как это работает на практике. Попробуем вставить книгу с несуществующим author_id и посмотрим, что произойдет.

try:
cursor.execute("INSERT INTO books (title, author_id) VALUES (%s, %s)", ("Unknown Book", 999))
conn.commit()
except psycopg2.IntegrityError as e:
conn.rollback()
print("Ошибка целостности данных: невозможно вставить книгу с несуществующим автором.")


В данном случае psycopg2 выбросит исключение IntegrityError, и мы сможем обработать его, откатив изменения и предупредив пользователя об ошибке.
👍41
🔢 Имеется кортеж вида t = (4, 2, 3). Какая из операций приведёт к тому, что имя t будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
16%
t[0] = 1
12%
t = (1) + t[1:]
19%
t = (1,) + t[1:]
12%
t.startswith(1)
30%
Нет верного варианта
12%
Не знаю
👍5🤔2🤯1
Python Hub - сборище Питонистов
🔢 Имеется кортеж вида t = (4, 2, 3). Какая из операций приведёт к тому, что имя t будет ссылаться на кортеж (1, 2, 3)?
Разбор!

Поскольку кортежи неизменяемы, их нельзя модифицировать на месте, но мож­но создать новый кортеж с желаемым значением. Изменить первый элемент можно за счёт создания нового кортежа из частей имеющегося с помощью срезов и конкатенации: `t = (1,) + t[1:]`. При этом одноэлементные кортежи требуют хвостовой запятой, иначе число в скобках это всего лишь число.
👍61
Python Hub - сборище Питонистов
Для чего в Python используется встроенная функция enumerate()?
>60% верно ответили 🤩

А для остальных 40% вот разбор 👇

Часто в коде начинающих разработчиков на Python можно встретить объявление for-цикла в виде for i in range(len(numbers)), когда можно обойтись for num in numbers. Если в коде действительно необходим и сам элемент, и его индекс, используйте enumerate(): for i, num in enumerate(numbers)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1😁1
⚠️ Промокод на бесплатное использование хостинга все еще актуален! (как минимум месяц🧐😃)⚠️

😎 У хостинга Hostetski все еще действует промокод SHCODER14

При вводе в процессе заказа дает скидку до 3$ на срок до одного месяца.
(первый месяц выйдет бесплатным для простых тарифов)

Этого хватит на базовый и базовый+ тариф, а потом уже сможете решить, оставаться пользоваться данным хостом или нет. 🤔

Ссылка на заказ тарифа:
https://hostetski.ge/cart.php?a=confproduct&i=0&aff=2

📹Видос, где можно детально посмотреть, как загрузить своего тг бота есть у меня на канале:

https://www.youtube.com/watch?v=kwFEeuzICjU
👍41
Разбор!

Звёздочка соответствует оператору распаковки последовательности. Два числа присваиваются переменным, а оставшаяся часть последовательности (в данном случае пустой список) присваивается переменной со звёздочкой. Поэтому правильный ответ – 1 [] 2. Подробнее про распаковку тут
1👍1🍌1
Python Hub - сборище Питонистов
Что выведет код выше?
Разбор!

Генерируемые пользователем исключения перехватываются тем же способом, что и исключения, которые генерирует интерпретатор Python. Здесь намеренно инициируется встроенное исключение IndexError. Так как в блоке try было вызвано исключение, блок else выполняться не будет. Поэтому будет выведена только строка 'Получено исключение'.
👍21
📚 Библиотека aiosqlite с примерами на Python

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

🛠 Установка и начальная настройка

Первый шаг в использовании aiosqlite — это установка библиотеки. Это можно сделать с помощью pip:

pip install aiosqlite


После установки, можно приступить к настройке подключения к базе данных. Рассмотрим простой пример:

import aiosqlite
import asyncio

async def main():
async with aiosqlite.connect('example.db') as db:
await db.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
await db.commit()

asyncio.run(main())


В этом примере мы создаем подключение к базе данных example.db и создаем таблицу users, если она еще не существует.

🔄 Выполнение асинхронных запросов

Одним из ключевых преимуществ aiosqlite является возможность выполнения асинхронных запросов. Рассмотрим пример добавления и получения данных из таблицы:

async def add_user(db, user_name):
await db.execute('INSERT INTO users (name) VALUES (?)', (user_name,))
await db.commit()

async def get_users(db):
async with db.execute('SELECT * FROM users') as cursor:
async for row in cursor:
print(row)

async def main():
async with aiosqlite.connect('example.db') as db:
await add_user(db, 'Alice')
await add_user(db, 'Bob')
await get_users(db)

asyncio.run(main())


В этом примере мы добавляем двух пользователей в таблицу users и выводим всех пользователей на экран. Обратите внимание, что все операции с базой данных выполняются асинхронно.

⚠️ Обработка ошибок и управление транзакциями

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

async def main():
async with aiosqlite.connect('example.db') as db:
try:
async with db.execute('BEGIN'):
await db.execute('INSERT INTO users (name) VALUES (?)', ('Charlie',))
# Принудительно вызовем ошибку
raise Exception("Something went wrong")
await db.commit()
except Exception as e:
await db.rollback()
print(f"Transaction failed: {e}")

asyncio.run(main())


В этом примере мы демонстрируем использование транзакций и обработку ошибок. Если в процессе выполнения транзакции возникает ошибка, изменения автоматически откатываются.
👍4
🚀 Давайте поможем всем, кто это читает!

💻 Подскажите, в каких чатах можно найти работу, связанную с Python'ом?
Большая часть аудитории этого канала занимается разработкой ботов. Может, есть чатики для вакансий или заказов на разработку телеграм-ботов?

🤔 Если таких чатов нет, как думаете, было бы актуально что-то подобное создать?

💡 У меня появилась идея — создать сайтик/сервис со всеми стажировками в IT! Пользовались бы?

P.S. Поделитесь, где искать стажировки. Вдруг я какой-то крутой сервис пропустил 😅

Гоу вместе найдем полезные ресурсы и поддержим друг друга! 🌟
👍52🤯1
Что выдаст код выше?
Anonymous Quiz
43%
True
32%
False
5%
None
10%
Error
11%
Не знаю
👍4