migrate 명령어 말고 SQL로 DB에 적용시키는데 쉬운 방법이 있다.
아래처럼 migration 을 해서 0001.initial.py 파일을 만들어보자.
# 마이그레이션해주기
python3 manage.py makemigrations 'app 이름' --settings=config.settings.local
# 예시
python3 manage.py makemigrations 'pizza' --settings=config.settings.local
그리고나서 아래 명령어를 한다.
python3 manage.py sqlmigrate pizza 0001 --settings=config.settings.local
그럼 아래처럼 쿼리문을 보여준다.
SELECT VERSION(),
@@sql_mode,
@@default_storage_engine,
@@sql_auto_is_null,
@@lower_case_table_names,
CONVERT_TZ('2001-01-01 01:00:00', 'UTC', 'UTC') IS NOT NULL
; args=None; alias=default
(0.002) SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; args=None; alias=default
(0.019) SHOW FULL TABLES; args=None; alias=default
(0.004) SELECT `django_migrations`.`id`, `django_migrations`.`app`, `django_migrations`.`name`, `django_migrations`.`applied` FROM `django_migrations`; args=(); alias=default
CREATE TABLE `pizza_pizza` (`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `created` datetime(6) NOT NULL, `updated` datetime(6) NOT NULL, `name` varchar(50) NOT NULL); (params None)
(0.011)
SELECT engine
FROM information_schema.tables
WHERE
table_name = 'pizza_pizza' AND
table_schema = DATABASE()
; args=['pizza_pizza']; alias=default
CREATE INDEX `pizza_pizza_created_2a9804e7` ON `pizza_pizza` (`created`); (params ())
--
-- Create model Vehicle
--
CREATE TABLE `pizza_pizza` (`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `created` datetime(6) NOT NULL, `updated` datetime(6) NOT NULL, `name` varchar(50) NOT NULL);
CREATE INDEX `pizza_pizza_created_2a9804e7` ON `pizza_pizza` (`created`);
그럼 위처럼 나오는데, 위를 보고 sql 문서를 작성하면 된다.
/**
* pizza 테이블 생성
*/
DROP TABLE IF EXISTS `pizza`;
CREATE TABLE
`pizza` (
`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY,
`created` datetime(6) NOT NULL,
`updated` datetime(6) NOT NULL,
`name` varchar(50) NOT NULL
);
CREATE INDEX
`pizza_created_created` ON `pizza` (`created`);
INSERT INTO
`pizza` (
`id`,
`created`,
`updated`,
`name`
)
VALUES (
1,
'2023-05-17 16:52:52.841231',
'2023-05-17 16:52:52.841263',
'페퍼로니'
), (
2,
'2022-12-17 16:52:52.841231',
'2022-12-17 16:52:52.841263',
'불고기'
), (
3,
'2022-11-17 16:52:52.841231',
'2022-11-17 16:52:52.841263',
'콤비네이션'
);
COMMIT;
위 처럼 만들어볼 수 있다.
'Python > django' 카테고리의 다른 글
count() 과 len() 차이 (0) | 2023.06.16 |
---|---|
Django OneToOne Field 사용 지양하는 이유 (0) | 2023.05.24 |
Django Migration 사용 안하고 DDL 사용하기(1) (1) | 2023.05.16 |
django testcode 작성 연습 (0) | 2023.05.12 |
Django 메서드 & python 메서드 (0) | 2023.05.03 |