2021. 12. 28. 02:10ㆍ작업/Django
https://daphne-dev.github.io/2020/10/01/django-mysql/
MySQL 설치하기 (mysql-server와 mysql-client 둘다 설치해주셔야함)
# 혹시모르니 가상환경에 들어간 후 다음 코드 실행
sudo apt-get update
sudo apt-get install mysql-server
# pip install mysqlclient 나는 이게 안되서
sudo apt-get install mysql-client
# 파이썬에서는 mysqlclient라는 라이브러리로 MySQL에 쉽게 연동이 가능하다.
pip install mysqlclient하려는데 안 깔림..
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
이런 에러가 뜸..
일단 우분투 버전 확인과 mysql_config not found래서 한번 확인해봄
sudo apt install libmysqlclient-dev를 깔아봄
그후 다시 mysql_config --version
+ 결국 안되서 sudo apt-get install mysql-client로 설치함
MySQL 실행하기
# mysql 잘 깔렸나 버전확인
mysql --version
# mysql 실행
sudo service mysql start
# 만약 su: warning: cannot change directory to /nonexistent: No such file or directory 이런 에러가 뜬다면
# 우분투 환경에서 다음 코드 실행
sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start
sudo mysql -u root -p
mysql> 이 보인다면 mysql에 들어온 것이 성공한 것이다.
DB에 접속 후
SHOW DATABASES; 를 입력하면 현재 DB목록이 나온다.
MySQL 계정을 생성하기 위해서 mysql이라는 DB에 접근하자.
그 다음 예시를 위해 example1이라는 데이터베이스를 만든다
CREATE DATABASE example1;
SHOW DATABASES;
MySQL 계정 생성 및 권한주기
# mysql 이라는 DB에 접근
USE mysql;
# 현재 생성되어있는 계정의 목록을 볼 수 있음.
SELECT User, Host FROM user;
# 계정 생성하기
# CREATE USER '계정이름'@'접근가능한 IP' IDENTIFIED BY '비밀번호';
CREATE USER 'seoyoon1'@'localhost' IDENTIFIED BY '비밀번호';
이제 이 계정이 exampl1 DB를 사용할 수 있도록 권한을 부여하자.
GRANT ALL PRIVILEGES ON example1.* TO seoyoon@localhost;
SHOW GRANTS FOR 'seoyoon1'@'localhost';
MySQL 끄기
exit
완전 쿨하게 보내버린다..
Django와 연동
다음에 열 때는 restart하면 될 것 같다.
MySQL 연동용 프로젝트1을 만들었다. 여기에서 아까 만들었던 DB인 example1을 연결시켜보자.
+
그런데 자꾸 이런 에러가 뜬다
이걸 아무리 깔아봐도..안된다 그래서 일단 이 seoyoonenv는 포기하고 poetry먼저 시도해보기로 했다.
+ 그러려다가 일단 virtualenv로도 하는 법을 알아야할 것 같아서 seoyoonenv로 다시시도
참고로 나는 윈도우지만 wsl2를 사용해서 우분투에서 개발중이고, x86_64인걸로 봐서 64비트임.
+ 다시 시도 sol1
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
여기서 나에게 맞는 wheel을 찾아 설치할까 했는데.. 이건 윈도우 전용인 것 같아서 패스했다.
+ sol2.
내 우분투 사양 lscpu x86_64라는거 보니 64비트임
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient
된 건가..?
ㅎ그흑흑흑흑..흑흑..흑흑 된거같은데..
+ db 내용 바뀔때마다 터미넬에서 migrate 해야함
python3 manage.py migrate
# 서버 실행
python3 manage.py runserver
https://uni2237.tistory.com/73
settings.py 수정
models.py에 생성할 DB 테이블들 추가
내가 만든 모델 ( Seoyoon_Item : 아이템들의 가격,이름,피드 등 과 Meta : 관리되었나 여부 등 )
migrate, migration
migration : 장고 모델에 변화가 생겼다는 걸 알려줌
migrate : 실제 DB에 모델 추가 반영
여기까지 하면 DB 테이블들을 모두 models.py에 반영했을 것이다.
즉, models안에 있는 model들 (Seoyoon_Item과 Meta) 는 DB의 테이블이 되는 느낌인가보다
이 중에서 Seoyoon_Item이 admin 페이지에서 관리되었으면 하는 DB라면?
admin.py에 모델 등록
python3 manage.py createsuperuser
python3 manage.py runserver
models에서 설정한 DB가 API칸에 들어있는 것을 확인할 수 있다
이렇게 페이지에서 DB를 추가,수정,삭제할 수 있다! 신기하다
+ MySQL 계정 설정 링크 깨질까봐 스샷 첨부하였다.
'작업 > Django' 카테고리의 다른 글
22.01.02 FBV와 CBV가 뭘까 / django-cors-headers / serializer 공부 (0) | 2022.01.03 |
---|---|
22.01.02 backend/user/seoyoon models.py 작업 시작 (0) | 2022.01.02 |
21.12.27 Django 튜토리얼 Part4 폼 쓰기, 제너릭 뷰 사용 (0) | 2021.12.27 |
21.12.27 Django 튜토리얼 Part3 뷰(페이지) 추가하기 (0) | 2021.12.27 |
21.12.25 Django 튜토리얼 Part2 첫번째 장고 앱 작성하기 (0) | 2021.12.27 |