Sunday_August_23
.
.
.
๋ฒ์จ ๊ธฐ์
ํ์
์ ํ์ง ์ผ์ฃผ์ผ์ด ์ง๋ฌ๋ค.
์๋ ์์ฝ๋์์๋ Django๋ผ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ,
๊ธฐ์
ํ์
์ ์งํ์ค์ธ '๋ธ๋๋'๋ผ๋ ํ์ฌ์์ ๋ฐฑ์๋๋
Flask๋ผ๋ ํ๋ ์์ํฌ๋ก ๊ฐ๋ฐ์ ํ๊ณ ์์ด์ ์ด๋ฒ์ ์๋กญ๊ฒ Flask๋ฅผ ๊ณต๋ถํ๊ฒ ๋๋ค.
๊ทธ๋์ ์ํด ์์ฐ๋์ด ์ฐ์ ๊น๋ํ ํ์ด์ฌ ํํํ ๋ฐฑ์๋, ์ผ๋ช '๊นํํ๋ฐฑ'
์ด ์ฑ
์ ๋ณด๋ฉด์ Flask๋ฅผ ๊ณต๋ถ์ค์ธ๋ฐ ์ด ์ฑ
์์๋ ORM์ ์ฌ์ฉํ์ง ์๋๋ค.
์ฒ์๋ถํฐ ORM์ ์ฌ์ฉํ๋ฉด SQL์ ๋ฐฐ์ธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ํ๋ฉด ๋ฐฑ์๋ ๊ฐ๋ฐ์์๊ฒ SQL์ ์ง์ง ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
(ORM์ด๋ ์ฝ๊ฒ ๋งํด, ์ฟผ๋ฆฌ๋ฌธ์ด ์๋ ํ์ด์ฌ์ ํด๋์ค๋ฅผ ์ด์ฉํด DB์ ๋ฐ์ดํฐ๋ฅผ๋ฅผ ์ฝ๊ฒ ๊ฑด๋ค ์ ์๊ฒ ํด์ฃผ๋ ์ข์ ์น๊ตฌ์ ๋๋ค ๐ )
๊ทธ๋ฆฌ๊ณ ์ํฉ ๋๋ฌธ์ Table์ ๋จผ์ ์กฐ์ํ๋ DDL์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ค๋ฃจ๋
DML, ๊ทธ ์ค์์ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ insert์ ๋ํด์ ๋ฐฐ์๋ณด๊ฒ ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ํ์ฌ 1๊ฐ๊ฐ ๋ค์ด์์ต๋๋ค.
mysql> select * from products;
+----+-----------------+---------+----------+---------------+
| id | thumbnail_image | name | price | discount_rate |
+----+-----------------+---------+----------+---------------+
| 1 | image_url1 | ์ํ1 | 23200.00 | 20 |
+----+-----------------+---------+----------+---------------+
1 row in set (0.00 sec)
๋จผ์ ํ์ฌ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
mysql> desc products;
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| thumbnail_image | varchar(2000) | NO | | NULL | |
| name | varchar(500) | NO | | NULL | |
| price | decimal(10,2) | NO | | NULL | |
| discount_rate | int | YES | | NULL | |
+-----------------+---------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
ํ ์ด๋ธ์์ ๋ฐ์ดํฐ์ ํ์ ์ถ๊ฐํ๊ธฐ ์ํด์ insert๋ผ๋ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง ์ ๋๋ค.
INSERT INTO products VALUES (๊ฐ1, ๊ฐ2, ..., ๊ฐN)
๋จผ์ 1๋ฒ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณด๊ฒ ์ต๋๋ค.
mysql> insert into products values (2, 'image_url2', '์ํ2', '17200.00', 10);
Query OK, 1 row affected (0.02 sec)
mysql> select * from products;
+----+-----------------+---------+----------+---------------+
| id | thumbnail_image | name | price | discount_rate |
+----+-----------------+---------+----------+---------------+
| 1 | image_url1 | ์ํ1 | 23200.00 | 20 |
| 2 | image_url2 | ์ํ2 | 17200.00 | 10 |
+----+-----------------+---------+----------+---------------+
2 rows in set (0.00 sec)
์ ๋ค์ด๊ฐ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด์ ์๊ฒ ๋ ์ฌ์ค์ธ๋ฐ, ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค ๋์๋ id๊ฐ๋ ๋ฃ์ด์ฃผ์ด์ผํฉ๋๋ค. ์๋ํ๋ฉด positionalํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
mysql> insert into products values ('image_url2', '์ํ2', 17200.00, 10);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
์ด์ฒ๋ผ ํ๋๊ฐ ๋ถ์กฑํ๋ค๊ณ ๋์ต๋๋ค.
์ ๊ทธ๋ผ 2๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ผ๋จ ๋ฐฉ๋ฒ์ 1๋ฒ๊ณผ ๋ค๋ฅผ๊ฒ ์์ต๋๋ค. ๋ค๋ง ์ปฌ๋ผ(ํ๋)๊น์ง ๋ฃ์ด์ค์ผ ํ๋ค๋ ์ ์ด ๋ค๋ฆ ๋๋ค.
INSERT INTO products (thumbnail_image, name, price, discount_rate) VALUES ('image_url3', '์ํ3', 13500, 30);
mysql> insert into products (thumbnail_image, name, price, discount_rate) values ('image_url3', '์ํ3', 13500, 30);
Query OK, 1 row affected (0.01 sec)
ํ์ธํด๋ณผ๊น์?
mysql> select * from products;
+----+-----------------+---------+----------+---------------+
| id | thumbnail_image | name | price | discount_rate |
+----+-----------------+---------+----------+---------------+
| 1 | image_url1 | ์ํ1 | 23200.00 | 20 |
| 2 | image_url2 | ์ํ2 | 17200.00 | 10 |
| 3 | image_url3 | ์ํ3 | 13500.00 | 30 |
+----+-----------------+---------+----------+---------------+
3 rows in set (0.00 sec)
์ค ใ ใ ๋งค์ฐ ์ ๋ค์ด๊ฐ๊ตฐ์.
โ๏ธ ๊ทธ๋ฆฌ๊ณ ๋ ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด์ ํ๋๋ฅผ ๊นจ๋ฌ์์ต๋๋ค.
โ๏ธ Decimal ํ์ ์ '123.00' ์ด๋ ๊ฒ ์คํธ๋งํ์ + ๋ค์ .00 ์ด๋ฐ๊ฒ์ ์์ฃผ๊ณ ๊ทธ๋ฅ int ํ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ ์์์ ์ธ์์ ํฉ๋๋ค ๐
๋ง์ง๋ง์ผ๋ก 2๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ๋ฒ ๋ ์จ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ด
์๋ค.
๋์ ์ ์ด๋ฒ์ ์ปฌ๋ผ์ ์์๋ฅผ ๊ฑฐ๊พธ๋ก ๋ฐ๊ฟ๋ณด๊ฒ ์ต๋๋ค!
mysql> insert into products (discount_rate, price, name, thumbnail_image) values (15, 19000, '์ํ4', 'image_url4');
Query OK, 1 row affected (0.01 sec)
mysql> select * from products;
+----+-----------------+---------+----------+---------------+
| id | thumbnail_image | name | price | discount_rate |
+----+-----------------+---------+----------+---------------+
| 1 | image_url1 | ์ํ1 | 23200.00 | 20 |
| 2 | image_url2 | ์ํ2 | 17200.00 | 10 |
| 3 | image_url3 | ์ํ3 | 13500.00 | 30 |
| 4 | image_url4 | ์ํ4 | 19000.00 | 15 |
+----+-----------------+---------+----------+---------------+
4 rows in set (0.00 sec)
๐ ๐ ๐
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์, 1๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ
์ด๋ธ์ ์ปฌ๋ผ์ ์์์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. 2๋ฒ ๋ฐฉ๋ฒ์ ์ํ๋ ์์๋๋ก ๋ฃ์ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ฌผ๋ก 2๋ฒ๋ฐฉ๋ฒ์์ ์ ํด์ค ์ปฌ๋ผ์ ์์์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ผ ํฉ๋๋ค.
โ๏ธ ๊ทธ๋ฆฌ๊ณ 1๋ฒ์ ๋ฐฉ๋ฒ์ positional ํ๊ธฐ ๋๋ฌธ์ id์ ๊ฐ๋ ๋ฃ์ด์ค์ผ ํ์ง๋ง, 2๋ฒ์งธ ๋ฐฉ๋ฒ์ keyword ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ id์ ๊ฐ์ auto๊ฐ ์ ์ฉ์ด ๋ฉ๋๋ค.