Работа с базами данных в Python: создание и настройка

Раздел: Python -> Работа с базами данных

Основные способы создания базы данных в Python

Как создать файловую базу данных SQLite с помощью встроенного модуля sqlite3?

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

import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    )
''')
conn.commit()
conn.close()

создание базы данных на python (создание базы данных с помощью python)

Пояснение: метод connect создаёт или открывает файл базы данных. Объект cursor используется для выполнения SQL-запросов. В примере создаётся таблица users с автоинкрементным первичным ключом и уникальным полем email. После завершения транзакция фиксируется через commit.

Типичные ошибки: если файл базы данных заблокирован другим процессом, возникнет исключение sqlite3.OperationalError: database is locked. Решение: использовать соединение с таймаутом или избегать одновременной записи. Также возможна ошибка при попытке создать таблицу с уже существующим именем без проверки IF NOT EXISTS.

Как создать базу данных MySQL через библиотеку pymysql?

Для работы с MySQL необходимо сначала установить сервер MySQL, затем библиотеку pymysql (команда pip install pymysql).

import pymysql

connection = pymysql.connect(
    host='localhost',
    user='root',
    password='your_password',
    charset='utf8mb4'
)
try:
    with connection.cursor() as cursor:
        cursor.execute("CREATE DATABASE IF NOT EXISTS mydb")
    connection.commit()
finally:
    connection.close()

база данных на python (база данных на python)

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

Как создать базу данных PostgreSQL с помощью psycopg2?

PostgreSQL - мощная реляционная СУБД. Установка psycopg2 выполняется через pip install psycopg2-binary. Для создания новой базы данных необходимо подключиться к существующей (например, postgres).

import psycopg2

conn = psycopg2.connect(
    dbname='postgres',
    user='postgres',
    password='your_password',
    host='localhost'
)
conn.autocommit = True
cursor = conn.cursor()
cursor.execute("CREATE DATABASE testdb")
cursor.close()
conn.close()

Python интерфейс базы данных (интерфейс базы данных в python)

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

Как создать базу данных через ORM SQLAlchemy с декларативным подходом?

SQLAlchemy предоставляет универсальный способ работы с различными СУБД. Для создания базы данных достаточно создать движок и вызвать create_all.

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    email = Column(String(100), unique=True)

engine = create_engine('sqlite:///alchemy.db')
Base.metadata.create_all(engine)

Проблемы: необходимо правильно настроить URL подключения (например, postgresql://user:pass@localhost/mydb). Возможны ошибки из-за отсутствия установленных драйверов для конкретной СУБД.

- подключение к бд python (подключение к базе данных в python)

Расширенные примеры создания баз данных и таблиц

SQLite: таблица с внешним ключом и транзакциями

Пример
import sqlite3

conn = sqlite3.connect('shop.db')
cursor = conn.cursor()

# Включение поддержки внешних ключей
cursor.execute("PRAGMA foreign_keys = ON")

# Создание таблицы категорий
cursor.execute('''
    CREATE TABLE IF NOT EXISTS categories (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL
    )
''')

# Создание таблицы товаров с внешним ключом
cursor.execute('''
    CREATE TABLE IF NOT EXISTS products (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT NOT NULL,
        price REAL,
        category_id INTEGER,
        FOREIGN KEY (category_id) REFERENCES categories(id)
    )
''')

# Вставка данных в транзакции
try:
    cursor.execute("INSERT INTO categories (name) VALUES ('Electronics')")
    cursor.execute("INSERT INTO products (title, price, category_id) VALUES ('Laptop', 999.99, 1)")
    conn.commit()
except sqlite3.Error as e:
    conn.rollback()
    print(f"Ошибка: {e}")
finally:
    conn.close()
Результат: создана база shop.db с двумя таблицами, связанными внешним ключом. При ошибке вставки транзакция откатывается.

MySQL: создание базы данных и пользователя с привилегиями

Пример
import pymysql

conn = pymysql.connect(host='localhost', user='root', password='pass')
cursor = conn.cursor()

# Создание базы данных
cursor.execute("CREATE DATABASE IF NOT EXISTS myappdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")
cursor.execute("CREATE USER IF NOT EXISTS 'appuser'@'localhost' IDENTIFIED BY 'secret'")
cursor.execute("GRANT ALL PRIVILEGES ON myappdb.* TO 'appuser'@'localhost'")
cursor.execute("FLUSH PRIVILEGES")
conn.commit()
cursor.close()
conn.close()
Результат: создана база myappdb и пользователь appuser с полным доступом к ней.

PostgreSQL: создание таблицы с serial и индексом

Пример
import psycopg2

conn = psycopg2.connect(dbname='testdb', user='postgres', password='pass')
cursor = conn.cursor()

cursor.execute('''
    CREATE TABLE IF NOT EXISTS articles (
        id SERIAL PRIMARY KEY,
        title VARCHAR(200) NOT NULL,
        body TEXT,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
''')
cursor.execute("CREATE INDEX IF NOT EXISTS idx_articles_created ON articles (created_at)")
conn.commit()
cursor.close()
conn.close()
Результат: таблица articles с автоинкрементным ключом и индексом по дате создания.

SQLAlchemy: создание связанных таблиц с отношением

Пример
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, declarative_base

Base = declarative_base()

class Author(Base):
    __tablename__ = 'authors'
    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    books = relationship("Book", back_populates="author")

class Book(Base):
    __tablename__ = 'books'
    id = Column(Integer, primary_key=True)
    title = Column(String(200))
    author_id = Column(Integer, ForeignKey('authors.id'))
    author = relationship("Author", back_populates="books")

engine = create_engine('sqlite:///library.db')
Base.metadata.create_all(engine)
Результат: база library.db с таблицами authors и books, связанными внешним ключом. SQLAlchemy автоматически создает необходимые SQL-команды.

Создание базы данных с помощью Python - comments

En
создание базы данных на python (python)