Во-первых, вам необходимо убедиться, что имя пользователя и пароль, которые вы используете для подключения к MySQL, правильные и что у пользователя есть правильные привилегии для работы с выбранной базой данных.
Затем вы можете проверить, что MySQL принимает соединения на локальном хосте.
Что касается прямой адресации исключения «Отказ в соединении», проверьте такие вещи, как сокет mysql, используемый для связи с приложениями localhost, такими как ваш проект Django. Сокет должен существовать и быть настроен в MySQL.
Я также рекомендую взглянуть на что-то вроде SQLAlchemy для Python, которое поможет вам напрямую взаимодействовать с базой данных, используя объекты Python. Например,
Подключение к базе данных:
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship, scoped_session, mapper
from config import DB_URL
"""Database Declaration"""
metadata = MetaData()
Base = declarative_base(name='Base', mapper=mapper, metadata=metadata)
engine = create_engine(DB_URL, pool_recycle=1800)
Session = sessionmaker(bind=engine, autocommit=False, autoflush=True)
session = scoped_session(Session)
Теперь вы можете использовать переменную session
для выполнения запросов и обновлений, используя ее унаследованные функции из класса Session SQLAlchemy.
SQLAlchemy также включает декларативную модель для сообщения Python, как выглядят ваши таблицы. Например,
class Clinic(Base):
__tablename__ = 'clinic'
clinic_id = Column(Integer, primary_key=True)
clinic_name = Column(VARCHAR)
address = Column(VARCHAR)
city = Column(VARCHAR)
zip = Column(VARCHAR)
phone = Column(VARCHAR)
user_id = Column(VARCHAR)
Эти примеры хорошо работают для моих проектов во Flask и должны работать достаточно хорошо в Django.