Connect an existing MySQL database to a Django project
In the following project, we’ll connect an existing MySQL database to a Django project
In the following repo, we’ll connect an existing MySQL database to a Django project
Connect Django
Project to MySQL
1 - Install django
, mysqlclient
pip install django
pip install mysqlclient
After installing these requirements, you need to connect Django project to the new database.
2 - Create Database and Insert Data
We should create the schema in database and then run below command
python manage.py migrate
after running this commad all the tables will create inside our database. —
3 - Set username
and password
in setting.py
Into the ` config > setting.py and to the
DATABASE ` section, set the database config like this format:
you need to change the <<username>>
and <<password>>
of this section to your own information
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'learn',
'USER': 'root',
'PASSWORD': '123123123',
'HOST': 'localhost',
'PORT': '',
}
}
After doing above steps Django is connected to the database.
4- Adding requirement tables for log in
to the Django-admin
:
by running migrate
command django
automatically create its requirements table into database:
python manage.py migrate
Now the Django’s requirement tables are created and we should create a superuser
to can Log in
to the Django admin
:
python manage.py createsuperuser
and fill the requirement with fake info. and then log in with that info.
Explain Queries
All Queries Are in all > admin.py
1 - SELECT
all Student that their mark
>= 10:
Participated.objects.raw("""
SELECT stu_id
FROM participated
WHERE mark >= 10
"""
)
2 - SELECT
all Student that their mark
< 10:
Participated.objects.raw("""
SELECT stu_id
FROM participated
WHERE mark < 10
"""
)
3 - SELECT
all Student that their balance
> 70: We should get balance
from Students
table so we should join participated
and students
to get access balance
:
Participated.objects.raw("""
SELECT stu_id
FROM participated
natural join students
WHERE balance > 70
"""
)
4 - UPDATE
Mark in Participated
table:
with connection.cursor() as c:
c.execute("""
UPDATE participated
SET mark = 9.99
WHERE mark IS NOT NULL
AND mark < 10
""")
5 - UPDATE
Mark in Participated
table:
with connection.cursor() as c:
c.execute("""
UPDATE participated
SET mark = mark + 1
WHERE mark BETWEEN 10 AND 19
""")
6 - SELECT
username of Students
table:
def sql_username(self, obj):
p = Students.objects.raw(f"""
SELECT *
FROM students
Where stu_id = '{obj.stu_id}'
limit 1
""")[0]
return f"{p.username}"