users 테이블

idfirst_namesecond_nameattribute

1 Mikel Cober 3%Mikel_Cober%dsfew
2 Tosha Chace TESTdDfwerwYz%Tosha_Chace%werhfsWhixc
3 Carrol Bean 1TESTzhncdDfwerwYz%carrol_bean%weornsWIJAxc
4 Mack Alice asyvwTESTncdDfUWYz%MACk_ALice%wehrJUWBaXAxc
5 Vicenta Kravitz Tn35g5h51u7lt1231W946J
6 Kevin Heart kUJ3N67vLB07mQL9Ai7p18cXGzjdT32r8283ZQi

와일드카드 _ & %

_는 한 글자만을 의미하며, %는 0글자부터 그 이상을 의미한다.

%와 % 사이에 텍스트를 넣으면 해당 텍스트가 포함된 모든 raw를 불러올 수 있다.

-- TEST가 중간에 들어가는 모든 raw를 불러온다.
SELECT * FROM users WHERE attribute LIKE '%TEST%';

idfirst_namesecond_nameattribute

2 Tosha Chace TESTdDfwerwYz%Tosha_Chace%werhfsWhixc
3 Carrol Bean 1TESTzhncdDfwerwYz%carrol_bean%weornsWIJAxc
4 Mack Alice asyvwTESTncdDfUWYz%MACk_ALice%wehrJUWBaXAxc
SELECT * FROM users WHERE attribute LIKE '_TEST%';
=> TEST 앞에 1만 존재하는 3번 raw만 가져온다.

와일드카드 없이 텍스트로 시작하거나 끝나면 해당 텍스트로 시작되거나 끝나야 한다.

SELECT * FROM users WHERE attribute LIKE 'TEST%';
=> TEST로 시작하는 2번 raw만 가져온다.
SELECT * FROM users WHERE attribute LIKE '%TEST%Axc';
=> Axc로 끝나는 3,4번 raw를 가져온다.

case sensitivity

case sensitivity는 대소문자를 구별하느냐의 차이를 의미한다.

MySQL - case-insensitive <-> BINARY

MySQL에서 LIKE는 기본적으로 case-insensitive하다. 즉, 대소문자를 구별하지 않는다.

-- 모두 같은 결과를 가져온다.
SELECT * FROM users WHERE attribute LIKE '%TEST%';
SELECT * FROM users WHERE attribute LIKE '%test%';
SELECT * FROM users WHERE attribute LIKE '%TeSt%';

case-sensitive 하려면 즉, 대소문자를 구별하여 패턴을 찾기 위해서는 BINARY를 사용해야 한다.

SELECT * FROM users WHERE attribute LIKE BINARY '%TEST%';

PostgreSQL - case-sensitive <-> ILIKE

PostgreSQL에서는 MySQL과는 반대로 case-sensitive하다. 즉, 대소문자를 구별한다.

case-insensitive 하려면 ILIKE를 사용해야 한다. ILIKE는 PostrgreSQL에서만 지원하는 방식이다.

SELECT * FROM users WHERE attribute LIKE '%TEST%'; # case-sensitive
SELECT * FROM users WHERE attribute ILIKE '%tEsT%'; # case-insensitive

LIKE PERFORMANCE 관련

정규식 표현 REGEXP (MySQL), ~ (PostgreSQL)와 비교

-- 두 쿼리가 같은 의미 (MySQL)
SELECT * FROM users WHERE attribute LIKE '%TEST%'; -- LIKE 가 더 빠름
SELECT * FROM users WHERE attribute REGEXP 'TEST'; -- REGEXP

정규식 표현을 LIKE와 같은 용도로 활용하면 성능이 훨씬 느리기 때문에 주의가 필요하다.

정규식 표현은 필요한 상황에 맞춰서 활용해야 한다.

INDEX 활용

와일드카드가 뒤에 오는 prefix search( e.g. LIKE ‘TEST%’ )의 경우, B-TREE INDEX를 활용하여 성능을 높일 수 있다.

하지만, ‘%TEST’처럼 와일드카드가 먼저 나오는 postfix search경우는 FULL TABLE SCAN을 실행할 수밖에 없다.

( INDEX는 값을 LEFT-TO-RIGHT로 처리하는 특성 때문 )

‘%TEST%’같은 infix search도 마찬가지다. 이럴 경우, FULL TEXT SEARCH를 고려할 수 있다.

문제 설명

이번 문제는 attribute에서 %{first_name}_{second_name}%의 구조를 가진 raw를 찾는 것이다. 단, 이름 철자 그대로 적용되어야 한다.

예를 들면, 1번 raw에서 Mike Cober은 %Mikel_Cober%형태를 띄고 있다. 하지만, 4번 raw의 경우, %MACk_ALice%형태로 대소문자에 문제가 있음을 볼 수 있다.

CONCAT은 column value와 텍스트를 이어주는 역할을 한다. 와일드카드를 문자로 활용하기 위해서 \를 앞에 붙여야 한다.

-- MySQL 기준
-- 와일드카드 %와 % 사이에 %{fisrt_name}_{second_name}% 구조를 넣은 형식이다.
SELECT * FROM users WHERE attribute 
    LIKE BINARY CONCAT('%\%', first_name , '\_' , second_name ,'\%%')

3번은 모두 소문자이고, 4번은 대소문자가 다르므로 정확하게 입력된 건 1,2번 raw뿐이다.

idfirst_namesecond_nameattribute

1 Mikel Cober 3%Mikel_Cober%dsfew
2 Tosha Chace TESTdDfwerwYz%Tosha_Chace%werhfsWhixc

 

Object Types

GraphQL Schema에서 대부분의 definition들은 Object Type이다. 각각의 Object Type은 애플리케이션 클라이언트가 상호 작용할 수 있는 Domain Object를 나타내야 한다. 만약 Author와 Post List를 가져오는 API가 있다고 가정해보자. 우리는 이 기능을 지원하기 위해 Author Type과 Post Type을 정의해야 한다. code first 방식을 사용한다면, 데코레이터와 Typescript Class를 이용해서 다음과 같이 정의할 수 있다.

import { Field, Int, ObjectType } from '@nestjs/graphql';
import { Post } from './post';

@ObjectType()
export class Author {
  @Field(type => Int)
  id: number;

  @Field({nullable: true})
  firstName?: string;

  @Field({nullable: true})
  lastName?: string;

  @Field(type => [Post])
  posts: Post[];
}

위와 같이 만든 Author 클래스를 아래처럼 Resolver에서 사용할 수도 있다.

import { Resolver, Query } from '@nestjs/graphql';
import { Author } from './entities/author.entity';

@Resolver()
export class Resolver {
  @Query(returns => [Author])
  getAllAuthor() {
    return [{ name: "example1" }, { name: "example2" }];
  }
}

InputType과 ArgsType

InputType과 ArgsType 모두 Query혹은 Mutation에서 Argument들을 받고자할 때 사용할 수 있다. 두 개의 차이점은 코드를 작성할 때와 GraphQL 요청을 보낼 때 나타난다.

코드를 작성할 때 차이점

둘다 @Args() 데코레이터를 사용한다. 그런데 @Args()의 인자로 이름을 넣어주냐 안넣어주냐에서 차이가 있다. InputType을 사용할 경우, @Args()의 인자로 args의 이름(string)을 넣어주어야한다. ArgsType을 사용할 경우, @Args()의 인자로 args의 이름을 넣지 않아도 된다.

InputType을 사용할 때

import { Field, InputType } from '@nestjs/graphql';

@InputType()
export class AuthorArgs {
  @Field()
  firstName: string;

  @Field()
  lastName: string;
}
import { Resolver, Query } from '@nestjs/graphql';
import { AuthorArgs } from "./dtos/author.dto";

@Resolver()
export class Resolver {
  @Query(returns => Boolean)
  createAuthor(@Args('example') args: AuthorArgs) {
    return true;
  }
}

ArgsType을 사용할 때

import { Field, ArgsType } from '@nestjs/graphql';

@ArgsType()
export class AuthorArgs {
  @Field()
  firstName: string;

  @Field()
  lastName: string;
}
import { Resolver, Query } from '@nestjs/graphql';
import { AuthorArgs } from "./dtos/author.dto";

@Resolver()
export class Resolver {
  @Query(returns => Boolean)
  createAuthor(@Args() args: AuthorArgs) {
    return true;
  }
}

GraphQL 요청을 보낼 때 차이점

InputType은 @Args()에 넘겨준 args의 이름으로 하나의 객체를 보내고, ArgsType은 각각의 Field를 따로따로 보낸다.

InputType을 사용할 때

{
  createAuthor(example: { firstName: "Brendan", lastName: "Eich" })
}

ArgsType을 사용할 때

{
  createAuthor(firstName: "Brendan", lastName: "Eich")
}
 

 

우분투에 설치하는 방법: https://velog.io/@broccoliindb/PostgreSQL

 

PostgreSQL

설치 링크: https://www.postgresql.org/download/linux/ubuntu/ 참고링크: https://www.cybertec-postgresql.com/en/postgresql-getting-started-on-ubuntu/서

velog.io

 

계정 관리: https://bono915.tistory.com/entry/Postgresql-DB-사용자-추가-및-Role-권한-관리

 

수정 Update, 삭제 Delete, 테이블 비우기 Truncate
https://rfriend.tistory.com/538

Ubuntu에서 nvm, npm을 설치해보겠습니다.

 

이번에 Ubuntu가 20.04.1 버전으로 업데이트 되었습니다.

 

LTS는 Long Term Support의 약자로 안정화 버전이라고 이해하시면 됩니다.

 

nvm은 Node Version Manager의 약자로 node.js의 버전을 관리해주는 프로그램입니다.

 

개발 중에 특정 버전의 node.js가 필요할 때가 있습니다.

 

그 때 nvm을 통해 해당 버전으로 이동하여 사용하면 됩니다.

 

node.js는 javascript로 개발되는 소프트웨어 플랫폼입니다.

 

저는 "브라우저 세상에서만 구동할 수 있었던 javascript를 서버 세상에서도 구동할 수 있게 해주는 프로그램" 정도로 이해하고 있습니다.

 

npm은 Node Package Manager의 약자로 node.js에서 쓰이는 각종 패키지를 관리해주는 프로그램입니다.

nvm 설치방법

nvm은 깃헙에서 관리되고 있습니다.

github.com/nvm-sh/nvm

 

nvm-sh/nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm

github.com

깃헙에서 Installing and Updating 항목을 보면 설치방법이 나와 있습니다.

github.com/nvm-sh/nvm#installing-and-updating

 

nvm-sh/nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm

github.com

curl이나 wget으로 설치가능합니다.

// curl
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

// wget
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

그리고 설정파일을 리로드합니다.

설정파일은 ~/.bash_profile, ~/.zshrc, ~/.profile, ~/.bashrc 입니다.

// .bashrc 설정 리로드 예시
$ source ~/.bashrc

nvm 삭제방법

nvm 삭제방법은 nvm이 있는 디렉토리를 삭제하면 됩니다.

// nvm 삭제 예시
$ rm -rf ./nvm

nvm 버전확인

$ nvm --version

node 설치방법

nvm을 통해 node를 설치할 수 있습니다.

// 최신버전 node 설치
$ nvm install node

// 특정버전 node 설치
$ nvm install x.x.x

node 버전전환

nvm에서 node 버전을 전환할 수 있습니다.

// x.x.x 버전으로 전환
$ nvm use vx.x.x

node 버전확인

$ node -v

node 삭제하기

nvm으로 node 버전을 삭제할 수 있습니다.

// 특정 node.js 버전 삭제하기
$ nvm uninstall vx.x.x

npm 설치방법

//apt 업데이트
$ sudo apt update

// npm 설치
$ sudo apt install npm

npm 버전확인

// npm 버전확인
$ npm -v

npm 삭제하기

npm은 apt 명령어로 삭제할 수 있습니다.

// 설정파일은 남기고 npm 삭제하기
$ sudo apt remove npm

// 설정파일과 함께 npm 삭제하기
$ sudo apt purge npm

감사합니다.

API 서버를 만들때 가장 염려스러운 부분은 Cross Domain 이슈다. 그도 그럴게 Ajax 통신(Asynchronous Javascript XML)을 통한 데이터 송수신에서 대부분 발생하는 이슈는 Cross Domain 이슈라서 그렇다. 이 부분을 해결하기 위해서는 서버사이드 내에 Cross Domain을 허용하기 위한 처리가 되어있지 않으면 통신자체가 원천적으로 봉쇄되기 때문이다.

 

악성코드를 막기위한 브라우저의 AT필드!

 

 

예를 들어 게시판 타입 목록을 가져오는 API를 연동해보겠다. Angular.js 프로젝트를 이용해서 코드를 대충 작성해보면 아래와 같다.

 

app.module.ts

 

 

app.component.ts URL 입력할때 끝부분에 /(Slash)를 잊지말자.

 

 

이렇게 작성한 뒤에 django 서버를 기동하고 angular도 ng start 명령을 통해 실행시키자. 그리고 브라우저를 열어서 localhost:4200 으로 접속하자. 그리고 개발자 도구를 열어서 보면 짜잔.

 

 

 

 

에러가 뙇! 등장해있는걸 확인 할 수 있다. 저 "No Access-Control-Allow-Origin' 관련한 오류가 바로 Cross Domain 이슈가 되시겠다. 가끔 "둘 다 localhost 인데 도메인 같은거 아닌가여?" 하고 질문하시는 분들 계신다. Port 번호 다르면 다른 서버로 인식하기때문에 Cross Domain 에러가 발생한다.

 

그래서 일단은 Django에 Cors관련 라이브러리를 추가하도록 하자.

 

requirements 에 있는 base.txt 파일을 열어 아래와 같이 라이브러리를 추가한다.

 

 

 

이렇게 작성한 뒤에 작업실행에서 Initialize For Local 을 실행해 django-cors-headers 라이브러리를 내려 받자.

 

 

그리고 프로젝트 폴더 아래에 있는 settings/local.py 파일을 열어 아래와 같이 내용을 추가한다.

 

 

 

직접 키보드를 타이핑하기 싫은 중생을 위해 내가 다시 써주면

 

  CORS_ORIGIN_ALLOW_ALL = True
  CORS_ALLOW_CREDENTIALS = True

 

이렇게 설정을 추가 하면 된다. 물론 이건 로컬 개발환경 설정이니까 모든 요청을 수락한 거지만 배포용 설정은 아래와 같이 내용을 추가하면 되겠다.

 

settings/production.py

 

조금 더 자세한 설정방법을 알고 싶다면 여기를 클릭하면 되겠다.

 

그리고 마지막으로 settings/base.py 파일을 열어서 INSTALLED_APPS 항목에 'corsheaders'를 추가한다.

 

 

그리고 MIDDLEWARE 쪽에도 'corsheaders.middleware.CorsMiddleware' 를 추가한다.

 

 

일단 로컬 개발환경이니까 모든 접속을 허용한 상태다. 한번 아까 에러가 났던 관리자 도구에서 F5키를 눌러 새로고침을 해보자.

 

이렇게 정상적으로 데이터를 가져오는 것을 확인할 수 있다.

이걸 화면에 표시하려면 아래와 같이 코드를 수정하자.

 

app.component.ts

 

 

app.component.html

 

app.component.css

 

 

이렇게 서로 다른 도메인에 대한 API 통신이 가능하게 되었다.

'dev > Python' 카테고리의 다른 글

Pycham에서 Django(장고) 설치 및 실행환경 꾸미기  (0) 2021.07.15

git을 사용하다 브랜치 전체를 clone하지 않고 특정 브랜치 하나만 clone하는 것이 가능하다. 특히 브랜치가 많은 경우 이 방법을 사용할 수 있다.

git clone -b {branch_name} --single-branch {저장소 URL}

ex) git clone -b aiden_web --single-branch https://github.com/kingoxpo/server_dev

위와 같이 실행하면 java-racingcar의 javajigi branch만 clone할 수 있다.

0. 개요

Pycharm은 python을 사용하기에 좋은 IDE입니다. 하지만, community(무료)버전은 제한이 있습니다. JetBrain pycharm내 차이점을 보면, 웹 개발, 웹 프레임워크, SQL 지원이 빠져있습니다. 참고사이트[1]에 따르면 커뮤니티 버전에는 "자바스크립트 하이라이팅, 다국어 파일 지원, html 파일 링크 등 몇 가지 기능"이 빠져있다고 합니다. 모든 기능을 사용할 수 있는 프로페셔널 에디션은 년간 $199를 지불해야 함으로 조금 비쌉니다.

Pycharm 프로페셔널 에디션, 커뮤니티 에디션의 차이점

만일 학생이거나 교수, 대학교 직원이라면 학생라이센스로 프로페셔널 에디션을 받을 수 있습니다. 참고사이트[3]을 참고하시기 바랍니다.

참고사이트[1]에서는 파이썬 가상환경 및 장고가 설치되어 있는 것을 가정하고 시작하였습니다. 이와 다르게 본 문서에서는 pycharm에서 가상환경을 적용하여 프로젝트를 생성하고 pip로 Django를 설치한 뒤, 실행환경을 설정합니다.

1. 가상환경을 포함하여 프로젝트 생성하기

1.1 가상환경이란?

가상환경이란, 자신이 원하는 python환경을 구축하기 위해 필요한 모듈만 담아놓은 것입니다[4][5]. 가상환경으로 프로젝트를 꾸미면, 각 프로젝트마다 필요한 모듈을 설치하여 프로젝트마다 고유한 python 환경을 유지할 수 있습니다. 이러한 가상환경을 사용하는 까닭은 프로젝트마다 필요한 모듈의 버전이 다른 경우가 있기 때문입니다.

예를 들어, A프로젝트에서는 Django 1.0버전을 사용해야 하는데, 새로 작성하는 B프로젝트에서는 Django 1.8을 사용하게 되었습니다. 이럴 경우, 전역적으로 사용하는 python에 Django를 설치하였다면, 1.0버전과 1.8버전을 동시에 사용할 수 없어 관리하기가 어려워집니다. 이러한 점을 방지하기 위해 가상환경을 사용하게 됩니다.

pycharm에서는 간단하게 가상환경을 꾸밀 수 있습니다. 하지만, pycharm을 사용하지 않아도 여러 방법을 통해 가상환경을 생성할 수 있습니다. 가상환경에 대한 자세한 내용과 설치에 대해서는 코딩도장  파이썬 - 기본을 갈고 닦자!를 참고하시기 바랍니다.

1.2 프로젝트 생성하기

Welcome to Pycharm

PyCharm project를 생성하기 위해 Create New Project를 선택합니다.

프로젝트 생성창

가상환경을 설정하기 위해 Project Interpreter에서 New envirionment using을 선택합니다. 이후 Create를 선택합니다.

※ 이전에 사용하고 있던 프로젝트나, 실수로 New environment using을 선택하지 않았다면 다음 방법을 통해 가상환경을 설정할 수 있습니다.

File-Setting을 클릭한 뒤, Project:프로젝트 이름-Project Interpreter를 클릭하면 다음과 같은 창이 생성됩니다.

Settings창

톱니바퀴를 클릭-Add...을 클릭하면 다음과 같은 창이 뜹니다.

Add Python Interpreter

여기에서 Virturalenv Environment-New environment를 클릭하면 가상환경으로 프로젝트가 구성됩니다.

 

2. 가상환경에 Django 설치하기

가상환경에는 python이 연결되어 있고, pip가 설치되어 있습니다. pip를 통해 Django를 설치합니다.[2][6]

2.1 terminal에서 Django 설치하기

Pycharm terminal

Pycharm의 터미널(단축키: Alt+F12)를 클릭하여 터미널을 실행합니다. (venv)라고 적혀있는 부분이 현재 가상환경에 접속되어 있음을 알려줍니다.

2.1.1 pip와 setuptool 업그레이드

pip list --outdated

pip와 setuptools의 업그레이드가 가능한 것을 볼 수 있습니다. 업그레이드를 위해 명령어를 입력합니다.

pip

>python -m pip install --upgrade pip

setuptools

>pip install --upgrade setuptools

 

2.1.2 Django 설치

>pip install Django

를 터미널에 입력하면 자동으로 다운로드 받고 설치되는 것을 볼 수 있습니다.

※ 원하는 버전이 있을 경우, 다음과 같이 입력합니다.

>pip install Django=원하는 버전

2.2 Pycharm에서 Django 설치하기

File-Setting에서 Project: 프로젝트 이름-project interpreter에 들어갑니다.

설치된 패키지와 현재 버전, 최신 버전을 볼 수 있습니다.
- 오른쪽의 삼각형을 클릭하면 업그레이드가 가능합니다.
- '-'를 클릭하면 패키지가 삭제됩니다.

+를 클릭하면 나타나는 창에 Django를 입력합니다.

Intall Package를 클릭하면 자동으로 설치됩니다.

3. Django 프로젝트 생성 및 서버실행(Run) 설정

Django 설치가 완료되었으니, 프로젝트 생성 및 서버를 실행하는 법에 대해서 배워보겠습니다.[1][2][6]

3.1 Django 프로젝트 생성

Django 프로젝트를 생성해야 서버실행(Run)을 설정할 수 있습니다. 다음 명령어를 terminal에 입력합니다.

>django-admin.py startproject 프로젝트이름

명령어를 입력하면, 자동으로 여러 파일들이 생성됩니다. 본 파일을 복사하여 한 단계씩 올립니다.

3.2 기본 Django 서버 구동 방법

Django는 Django 프로젝트 폴더의 manage.py를 통해 서버를 구동할 수 있습니다. Django 프로젝트 폴더로 이동하여 manage.py를 실행합니다.

>python manage.py runserver

본 명령어를 제대로 입력하면, 다음과 같은 글이 뜹니다.

웹브라우저에서 http://127.0.0.1:8000/로 접속합니다.

접속이 되면, Django 설치가 잘 되었음을 알 수 있습니다.

3.3 Run을 통해 서버 실행하기

명령어를 입력하지 않고, Run을 통해 서버를 실행하도록 구성해보겠습니다.[1]

 Run-Edit Configurations를 클릭합니다.

+를 클릭한 뒤, Python을 클릭합니다.

Name에 Runserver, Script path에 manage.py 경로를 선택, Parameters에 runserver를 입력합니다. 그 후, Ok를 클릭합니다.

Run부분에 Run 'Runserver'가 생성된 것을 볼 수 있습니다. 이를 클릭하면, Terminal를 통한 실행과 다르게 Run을 통해서 실행되는 것을 볼 수 있습니다.

이상으로 Pycharm에서 장고 설치 및 실행환경을 꾸미는 법을 보았습니다.

'dev > Python' 카테고리의 다른 글

Django CORS 설정과 API 연동  (0) 2021.07.23

쿠팡x플레이오토 프로모션을 통해 등록한 상품을 쿠팡에서 삭제 후 다시 등록하길 원하시는 경우, 아래의 내용을 참고 바랍니다.

 

Step 1 - Wing에서 기존상품 삭제

  • wing으로 접속해서 좌측 메뉴바의 [상품관리] > [상품 조회/수정] 페이지 열기
  • 삭제하고자 하는 상품을 선택 후  [삭제]버튼을 통해 삭제합니다.

*기존상품을 삭제하지 않아도 재등록이 가능하지만 관리가 안될 수 있으므로 삭제를 권장드립니다.

 

  • 대량으로 상품을 삭제해야하는 경우 엑셀로 업로드하여 삭제할 수 있습니다(최대 5000개)

Step 2 - 상품 가져오기

  • 좌측 메뉴바의 [상품관리] > [통합솔루션으로 상품등록(무료)] 페이지 열기
  • [플레이오토 이동하기] 클릭

*새창으로 로그인 화면이 나타나면 로그인한 다음 [플레이오토 이동하기] 한번 더 클릭하시면 됩니다.

 

Step 3 - 상품 가져올 사이트 선택하기

  • 사이트 선택 후 로그인 및 로그인 정보값을 입력합니다.
  • 입력 후 하단의 [다음]버튼 클릭

 

 

Step 4 - 상품 등록하기

  • 쿠팡 로그인 정보를 입력합니다.
  • 하단의 [지정 상품 등록하기]체크박스 클릭

 

  • 주의사항 확인 후 [동의]버튼 클릭

 

  • 특정상품을 지정해서 재등록할 것인지 전체상품을 재등록할것인지 확인 후 원하는 방법으로 클릭

 

 

  • 가져오기 할 쇼핑몰의 상품코드를 입력한 후 [OK] 클릭(ex.스마트스토어의 상품코드)

 

 

  • 가져오기 할 쇼핑몰의 상품코드를 입력한 후 [OK] 클릭(ex.스마트스토어의 상품코드)

※ 잠깐, 쇼핑몰 상품코드를 복사하는 방법을 모르는분들은 아래 방법을 참고해주세요!

  • 먼저 쇼핑몰 어드민페이지에 접속해서 상품조회로 들어갑니다.
  • 검색조건을 통해 쿠팡으로 가져올 상품을 검색합니다.(엑셀에서 정리할 수도 있어요^^)

 

  • 조회된 상품목록 창 우측 상단에 '엑셀다운' 버튼을 클릭합니다.

 

  • 엑셀 다운로드가 완료되었다면 브라우저 창 좌측하단에 다운로드받은 파일을 클릭합니다.

 

  • A열(column)에 있는 상품번호를 드래그해서 복사합니다. (열 전체선택: Ctrl + Space bar, 복사: Ctrl+C)
  • 이제 복사된 상품번호를 아까봤던 창에서 붙여넣기 해주시면 됩니다~!

 

짜잔~ 끝났습니다.

안내드리는 방법으로 쉽고 빠르게 업데이트하시기 바랍니다^^

*만약 스마트스토어가 아닌 다른 쇼핑몰의 상품코드를 가져오더라도 크게 다르지 않아요~

 

감사합니다.

+ Recent posts