← Назад к вопросам
Как добавить запись в БД?
1.0 Junior🔥 221 комментариев
#Python Core#Базы данных (SQL)
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Способы добавления записи в БД
Добавление записей в БД зависит от выбранного инструмента и архитектуры приложения. Рассмотрю основные подходы:
SQL-запросы (Raw SQL)
Для прямого выполнения SQL-команд используется драйвер БД:
import psycopg2
connection = psycopg2.connect("dbname=mydb user=postgres password=secret")
cursor = connection.cursor()
query = "INSERT INTO users (name, email) VALUES (%s, %s)"
cursor.execute(query, ("John", "john@example.com"))
connection.commit()
cursor.close()
connection.close()
ORM (SQLAlchemy)
Объектно-реляционное отображение предоставляет удобный интерфейс:
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from models import User
engine = create_engine("postgresql://user:password@localhost/mydb")
with Session(engine) as session:
new_user = User(name="John", email="john@example.com")
session.add(new_user)
session.commit()
Django ORM
В Django используется встроенный ORM:
from myapp.models import User
User.objects.create(name="John", email="john@example.com")
# или
user = User(name="John", email="john@example.com")
user.save()
Асинхронная вставка (asyncpg)
Для асинхронной работы с PostgreSQL:
import asyncio
import asyncpg
async def insert_user():
conn = await asyncpg.connect("postgresql://user:password@localhost/mydb")
await conn.execute(
"INSERT INTO users (name, email) VALUES ($1, $2)",
"John", "john@example.com"
)
await conn.close()
asyncio.run(insert_user())
Важные моменты
Обработка ошибок:
- Всегда обрабатывай исключения при работе с БД
- Гарантируй закрытие соединений (используй контекстные менеджеры)
- Откати транзакцию при ошибках
Валидация данных:
- Валидируй входные данные перед вставкой
- Используй типизацию и схемы валидации (Pydantic)
Безопасность:
- Используй параметризованные запросы (защита от SQL-инъекций)
- Никогда не подставляй значения напрямую в SQL-строку
Производительность:
- Для массовой вставки используй batch операции
- При необходимости используй асинхронный код
Транзакции:
- Убедись, что данные полностью корректны перед commit
- Используй rollback при ошибках
Выбор инструмента зависит от требований проекта, масштаба и команды.