Visual Studio Code로 Python 및 pip 개발 환경 구축

 

 

Visual Studio Code 즉, VSC Python개발할때 구축하기 위한 설정들이 필요하다

여기서 Python 설치 환경변수를 잡아보겠다

 

일단 Python 최신버전설치한다

기존설치되어 있었다면 업데이트 해줘야 내가 하는 작업들따라할 수 있다

(기존에 낮은 Python 버전을 사용하면 추가라이브러리설치 해줘야하는 번거로움이 있다)

현재 나의 Python 버전 3.10.7 버전이다

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

설치가 됐다면 환경변수잡아줘야한다

윈도우 기준으로 실행창(윈도우키 + R)실행해서

명령어입력해주면 시스템 속성창이 뜬다

 

 

고급 -> 환경 변수로 들어가서

아래의 시스템 변수(S) 창에 Path를 선택하여 더블클릭하면 편집을 할 수 있다

 

 

시스템 Python어디설치 되어있는지 확인하기 위해

새로 만들기(N)를 눌러서

설치위치경로를 잡아준다

나 같은 경우는 C:\Program Files\Python310 이다

 

그리고 pip 경로도 잡아 줄것이므로

C:\Program Files\Python310\Scripts등록해준다

pip란? python 패키지설치하고 관리하는 패키지 매니저를 말한다

 

 

이제 확인을 누르고 cmd창을 열어서

버전이 나오는지 확인하면 된다

실행창을 열고 cmd 명령어python --version 입력하면 된다

 

 

pip설정완료 됐으면 cmd에서 pip --version 명령어 입력하면 된다

 

 

환경 변수 설정은 다 끝났고 

VSC에서 Python 개발환경구축해보자

개발할 폴더위치를 잡고 cmd창을 열어 code .를 입력하게 된다면 VSC해당 경로실행된다

혹은 VSC를 열어 폴더열기를 눌러서 개발할 폴더위치를 잡아준다

 

나는 C:\python 경로를 잡았다

아무것도 없는 빈 폴더상태

 

VSC에서 Python 개발 환경을 잡아주기 위해 확장 프로그램설치해야한다

아래는 필수 프로그램개발하기 좋은 환경을 만들어주기 위한 프로그램이다

 

Python : 린트, 디버깅, 코드 탐색, 코드 서식 지정, 리팩터링, 변수 탐색기와 같은 기능등을 지원

Python for VSCode : -> 구문 강조, 스니펫 및 린팅을 지원

Python Extension Pack : vs code에서 인기많은 extension pack

Python Type Hint : 입력 모듈 완성 및 type 힌트 자동 완성을 제공

 

Ctrl+Shift+X 눌러서 확장 프로그램을 열고 위의 이름들을 검색하여 설치하면 된다

 

 

Ctrl + ` 키를 눌러서 터미널 창을 열고 virtualenv venv 명령어입력해주면

루트폴더안에 venv 폴더생긴것 확인할 수 있다

 

만약 python 버전낮아 virtualenv이 없어서 따로 설치해야 한다면

명령어 pip install virtualenv입력하여 설치하고 완료되면

virtualenv --version 입력하여 버전이 잘 나오는지 확인진행해주면 된다

 

이제 왼쪽에 나오는 세로 메뉴python 모양버튼클릭하고

Venv 폴더클릭하면 나타나는 venv (3.10.7) 마우스오버하여

오른쪽에 있는 휴지통/화살표/좋아요(쉽게 설명하기 위함) 모양의 버튼 중 맨 마지막 버튼좋아요 버튼을 누른다

좋아요 버튼은 set as active workspace interpreter 버튼으로서 활성 작업 영역 인터프리터설정하는 작업이다

 

그 다음 왼쪽에 있는 화살표 버튼클릭하는데

화살표 버튼은 해당 프로젝트터미널 열기

이제 일반 터미널이다른 (venv) C:\python> 이라고 나타나게 될 것이다

 

 

이제 VSC에서 Python 개발 환경 구축이 끝났다

 

간단한 코드입력 후 

디버깅을 돌려보도록 하겠다

 

Ctrl + Shift + E 를 눌러  왼쪽 메뉴 맨 상단에 있는 탐색기로 이동하여

프로젝트 폴더안에 test.py 파일을 만들어 준다  

 

 

아래의 코드입력

import math
 
def getArea(length):
  area = length*length*math.pi
  return area
 
value = input('Input a number: ')
area = getArea(int(value))
print('Input number : {0} => Area : {1}'.format(value, area))

 

F5 디버깅실행하면

디버그 구성 선택을 할 수 있는데 한번만 해주면 된다

Python 파일선택해 주면 디버깅 실행된다

 

 

하단의 터미널에 보면 아래와 같이 코드실행되면서 명령어입력할 수 있다

숫자입력하면 결과가 나오고 

테스트 완성이다

Swagger를 활용한 api documents 만들기 - 2탄 (Swagger UI & yaml 작성방법)

 

앞서 Swagger를 활용한 api documents 만들기 - 1탄 (Swagger Editor)에서 경험한 Swagger UI 프로젝트 실행까지 봤다면 이번 포스팅에서는 Swagger UI에서 사용되는 코드구성yaml 코드 분석을 보도록 하겠다.

 

 

Swagger를 활용한 api documents 만들기 - 1탄 (Swagger Editor)

Swagger를 활용한 api documents 만들기 - 1탄 (Swagger Editor) 우리는 사용자들이 필요한 Application Program을 만들었을 것이며 거기에 필요한 Web과 Service들을 만들었을 것이다. 이것들을 자유롭게..

rjs5967.tistory.com

 

Swagger UI 개요

  • Swagger Editor에서 작성한 yaml 혹은 json 파일을 사용하여 디버깅 할 수 있는 환경셋팅 구성과 Api Documents를 확인할 수 있는 UI 로구성

 

Swagger UI 사용법

  • Swagger Editor에서 생성된 nodejs-server로 설명함.
  1. 터미널에서 npm start 명령어 실행 (README.md 참고)
  2. http://localhost:8080/docs 접속하여 Swagger Editor 에서 작성한 api문서가 맞는지 확인

 

Swagger UI 화면 구성과 yaml 코드 분석 (작성방법)

  • 화면완성도

openapi: 3.0.0 특징

- HTML 언어 사용가능
- Tab으로 문단 구분 확실하게 해야함
- 작성법 오류 시 최상단에서 확인 가능
- 사용안하는 코드는 해당 코드의 왼쪽 끝 부분에 삼각형 느낌표 표시로 나타남

정보

  • 코드
info:
  title: 에코의 api documents ( OPEN API )
  version: 1.0.0
  description: '<b>Description:</b><br>
    1. The part is divided into <b>Partner, and Console</b> <br>
    2. You can call the API by receiving the <b>Auth token key</b> corresponding to each part and <b>registering it in Authorize</b><br>
    3. You can check the <b>schema</b> to know the information you need to enter.'
  • UI

api 서버 (select box로 선택 가능)

  • 코드
servers:
- url: https://api_rjs5967.co.kr/v1
- url: http://10.20.0.5:5000/v1
  • UI

api list

  • 코드
tags:
- name: partner/auth
  description: Partner-Auth API
- name: partner/dashboard
  description: Partner-Dashboard API
  • UI

api url

  • 코드
    • 2줄 : api 주소 입력
    • 3줄 : Method 설정 - post/get/put/delete
    • 5줄 : api list 그룹 중 속할 곳
    • 6줄 : api list 그룹의 요약내용
    • 7줄 : api 상세 설명 (HTML 코드 삽입가능)
    • 9줄 : request body data 경로 지정
    • 11줄 : response code 지정
    • 15줄 : schema모델 설정 처럼 동일한 구조로 response data 형식 지정
    • 34줄 : 보안 설정
    • 35줄 : PartnerAuth 이름의 보안 생성
    • 36줄 : securitySchemes에서 설정한 PartnerAuth를 사용
paths:
  /partner/auth/preflight:
    post:
      tags:
      - partner/auth
      summary: Otp Check
      description: Checks whether Otp exists. <br> true if Otp exists false if not.
      requestBody:
        $ref: '#/components/requestBodies/Preflight_Request'
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                type: boolean
                default: false
                x-content-type: application/json
  /partner/auth/profile:
    get:
      tags:
      - partner/auth
      summary: Get Profile
      description: Get profile information.
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerInfoModel'
        "401":
          description: Requires authentication and authorization
      security:
      - PartnerAuth:
        - PartnerAuth
  • UI
    • 자물쇠 모양은 보안 설정이 되어 있어 인증이 필요하다. (위의 34줄 설정)

authortication

  • 코드
    • 2줄 : 보안 이름 설정
    • 4줄: 인증방법 종류 작성
securitySchemes:
  PartnerAuth:
    type: http
    scheme: bearer
    
  ConsoleAuth:
    type: http
    scheme: bearer
  • UI

Authorize 버튼 클릭 시 아래와 같은 팝업 생성

 

schema(모델 설정)

  • 코드
    • 5줄 : 기본값 설정
    • 10줄 : 이미 생성한 schema를 호출
components:
  schemas:
    Error_Type:
      type: boolean
      default: false
    Return_Body_Array_String:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error_Type'
        body:
          type: array
          items:
            type: string
          description: domain list
  • UI

 

requestBodies(Body Data설정)

  • 코드
    • 5줄 : request body data type 설정
    • 7줄 : 필수값 표시
    • 15줄 : body data 입력 시 예제 값 설정
    • 20줄 : data를 필수로 입력해야 하는지 설정
requestBodies:
  Preflight_Request:
    description: Preflight
    content:
      application/json:
        schema:
          required:
          - password
          - username
          type: object
          properties:
            username:
              type: string
              description: username
              example: username
            password:
              type: string
              description: SHA256
              example: SHA256
    required: true
  • UI


swagger 2.0


Tip - api 리스트 옵션 설정(docExpansion 옵션 추가)

  • node_modules/oas3-tools/dist/middleware/swagger-ui/index.html -> SwaggerUIBundle({}) 호출 시 옵션으로 docExpansion: 'none' 추가 하면 모두 접기가 가능하다.
    • docExpansion 옵션
      • none : 모두 접기
      • list : 파트별 펼치기 (내용 감추기)
      • full : 모두 펼치기
window.ui = SwaggerUIBundle({
  docExpansion: 'none'       // 원하는 옵션으로 추가   default는 list
})

 

위 코드 입력 시 아래와 같이 api 리스트 들에 대해 모두 접기가 가능하다

'IT > Node.js' 카테고리의 다른 글

Swagger를 활용한 api documents 만들기 - 1탄 (Swagger Editor)  (0) 2022.05.12

Swagger를 활용한 api documents 만들기 - 1탄 (Swagger Editor)

우리는 사용자들이 필요한 Application Program을 만들었을 것이며 거기에 필요한 WebService들을 만들었을 것이다. 이것들을 자유롭게 언제든지 사용할 수 있게 Web Api를 만들텐데 만들고 사용할줄 알아야하는데 알려주지 않으면 사용하기 힘들고 파악하는데 시간이 많이 걸릴 것이다.

그래서 필요한게 Api Documents다.

Api를 만들기 위해 개고생한 우리들을 위해 다른사람들이 사용할 수 있게 Swagger를 활용한 Api Documents를 만들어 보자.

 

Swagger Editor 개요

  • Swagger Editor의 문서 작성은 yaml 혹은 json 으로 작성 가능하며 실시간으로 확인할 수 있고 Swagger UI로 최종 버전을 확인할 수 있음.
    • Swagger 공식 주소 : https://swagger.io/ 
    • 참고 : https://editor.swagger.io/ (Edit → openapi로 변경 가능)
      • 아래왼쪽과 같은 형식의 코드로 작성되면 UI는 아래오른쪽과 같은 형태로 나타난다.

 

Swagger Editor 사용법

https://github.com/swagger-api/swagger-editor 에서 Clone 혹은 Download ZIP을 통해 프로젝트를 받는다.

 

  터미널(ctrl+`)에서 명령어 'npm start' 실행한다. (README.md 참고) (나는 vsc코드에서 사용중이다.)

아래와 같은 출력 내용으로 npm이 install되고 서버를 열게 될 것이다.

 

 

  http://localhost:3001로 접속하게 되면 https://swagger.io/ 와 같은 동일한 내용이 나타난다.

 

 

탭을 보면 작성되어있는 코드를 YAML로 저장할 수 있고 변환하여 JSON으로도 저장할 수 있는 기능을 갖추고 있다.

원하는 형태로 저장하여 사용할 수 있다.

 

 

Generate Server로는 작성되어 있는 코드를 Swagger UI 프로젝트로 변환시켜줄 수 있는데 원하는 언어의 프로젝트로 선택하면 압축파일이 만들어 진다.

 

나는 그 중에 nodejs-server를 선택했다.

 

 

'npm start' 명령어를 입력해주면 관련 라이브러리들설치되고 실행할 수 있는 주소가 나타나게 된다.

 

 

http://localhost:8080/docs 접속하면 swagger ui가 나타난다.

 

 

하지만 우리가 보기엔 이러한 UI는 웬 구닥다리 UI가 나온거지? 라는 의문이 들 것이다.

줘도 안쓸것 같은 느낌적인 느낌이랄까?

 

그래서 우리가 사용할 api는 openapi이다.

Swagger Editor로 YAML, JSON파일을 작성할 때 최상단에 있는 내용을 보면 swagger: "2.0" 라고 되어있다.

이 버전을 openapi버전으로 변경해 줘야 하는 것이다.

코드의 구조는 동일하나 형식이 다르다.

 

작성방법은 아래의 예시를 통해 확인할 수 있다.

Swagger Editor 프로젝트 안에 test/e2e/fixtures/petstore.openapi.yaml 파일이 존재하는것을 확인할 수 있을 것이다.

(자세한건 README.mdopenapi로 검색해보자.)

 

petstore.openapi.yaml에 있는 내용으로 Swagger Editor를 openapi버전으로 변경하고

nodejs-server 프로젝트를 받아 실행하면

 

 

 

깔끔하게 바뀐 Swagger UI가 나온다.

작성하는 방법은 공식 홈페이지를 참고하면 된다.

 

 

프로젝트 실행 및 관련 내용이 궁금하다면 프로젝트 내 포함되어 있는 파일인 README.md에 친절하게 나와있다.

 

 

 

Swagger UI 관련 내용은

Swagger를 활용한 api documents 만들기 - 2탄 (Swagger UI)에서 다루도록 하겠다.

SQL Server 원격 연결 허용 오류 

IIS를 셋팅 후 처음 접속하게 됐을 때 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오. 라고 오류가 뜬다. 그래서 셋팅을 설정해줘야하는데 

 

아래의 경로를 찾아가 

Sql Server Configuration Manager를 실행한다.

 

 

Sql Server 네트워크 구성에가서 TCP/IP 속성에 사용으로 변경해주고

 

IP주소 탭으로 이동하여 자신이 사용하고 있는 IP주소 (본인은 IP8에 있었음.)에 사용 활성을 '예'로 변경해준다.

 맨 밑에 IPALL 에는 TCP 포트를 1433 (MS SQL 기본 포트)를 적어주고 적용을 눌러 닫는다.

 

 

오른쪽 마우스 버튼을 클릭하여 다시 시작을 하여 재 실행해주고 

밑에 있는 SQL Server Browser도 실행이 안되어 있으면 실행해주자.

 

 

MS SQL로 로컬 접속을하여 속성에서 보안탭에 들어가 SQL Server 및 Windows 인증 모드(S) 로 선택해주면 된다.

 

 

마지막으로 방화벽에 들어가서

 

 

인바운드 규칙에서 새 인바운드 규칙을 만들어서 포트를 선택하고

 

 

아까 전에 입력한 MS SQL 기본 포트인 1433을 입력하고

 

 

다음 다음다음~~~~

 

 

자기가 지정하고 싶은 이름으로 보기편하게 입력하면 끝이다.

 

 

자 이제 접속을 하면 될것이다!

 

 

나는 왜 안되나 했더니 핸드폰으로 테더링을 하여 고정 IP가 아닌 유동 IP라 접속이 안됐던 것이다...

 OTL

 

핸드폰 테더링하여 로컬에서 IP주소로 SQL Server 접속가능하게 하시는 방법을 아시는분은 댓글로 남겨주시면 감사하겠습니다...

IIS 셋팅으로 원하는 주소로 설정(로컬 환경)

IIS로 프로젝트를 셋팅하기 위해서는 웹사이트를 추가해야 하는데 오른쪽 마우스 버튼을 눌러 웹 사이트 추가를 선택하고

 

자신의 프로젝트로 실제 경로를 잡아주고 호스트 이름을 원하는 주소로 셋팅해주면 된다. 

 

 

다 셋팅 후 호스트 설정을 바꿔줘야하는데 경로는 아래와 같다.

 

 

관리자 권한으로 실행 후 IIS에서 셋팅한 호스트 이름으로 설정해준다. 

자신의 로컬은 127.0.0.1 이고 로컬안에서는 원하는 주소로 셋팅을 할 수 있다.

 

 

이제 셋팅한 주소로 접속을 하면 프로젝트가 실행된다.

 

 

'IT > C#, ASP.NET' 카테고리의 다른 글

C#에서 Client IP 주소 가져오기 (CloudFlare 사용)  (0) 2020.03.07

JavaScript - 쿠키 가져오기

 

JavaScript의 쿠키값을 가져오기 위해선 함수를 만들어야 한다.

일단 쿠키값이 있는지 확인해보고 없으면 만들어보자.

구글 크롬에서 개발자도구(F12)를 눌러 현재 가지고 있는 쿠키값을 확인할 수 있는데

F12 -> Application -> Storage -> Cookies -> 확인할 경로에 들어가면

가지고 있는 쿠키값의 목록들을 확인할 수 있다.

 

* document.Cookie를 사용하면 현재 세션에서 가지고 있는 쿠키값을 코드확인할 수 있다.

 

만약 쿠키값이 없다면 빈 공간을 클릭하여 직접 쿠키생성할 수 있다.

 

 

자, 이제 함수를 만들어 보자.

 

function getCookie(name) { --가져올 쿠키의 이름을 파라미터 값으로 받고

     var nameOfCookie = name + "="; --쿠키는 "쿠키=값" 형태로 가지고 있어서 뒤에 있는 값을 가져오기 위해 = 포함

     var x = 0;

     while (x <= document.cookie.length) {  --현재 세션에 가지고 있는 쿠키의 총 길이를 가지고 반복

          var y = (x + nameOfCookie.length); --substring으로 찾아낼 쿠키의 이름 길이 저장

          if (document.cookie.substring(x, y) == nameOfCookie) { --잘라낸 쿠키와 쿠키의 이름이 같다면

               if ((endOfCookie = document.cookie.indexOf(";", y)) == -1) --y의 위치로부터 ;값까지 값이 있으면 

                    endOfCookie = document.cookie.length; --쿠키의 길이로 적용하고

               return unescape(document.cookie.substring(y, endOfCookie)); --쿠키의 시작점과 끝점을 찾아서 값을 반환

          }

          x = document.cookie.indexOf(" ", x) + 1; --다음 쿠키를 찾기 위해 시작점을 반환

          if (x == 0) --쿠키 마지막이면 

               break; --반복문 빠져나오기

     }

     return ""; --빈값 반환

}

 

함수를 작성했으면 사용해서 값을 확인해보자.

우리는 testCookie를 가져와야 하므로 만들었던 getCookie() 함수에 파라미터로 testCookie를 넣고 값을 반환하면 된다.

 

var cookie = getCookie('testCookie');
if (cookie != "") {
     alert("쿠키값은 : " + cookie);
}

 

결과는!

 

JavaScript - 날짜 설정하기 (사용자 지정 날짜 범위) + 크롬 디버깅 방법

 

해당 기간의 날짜 안에 무언가를 실행하거나 처리하고 싶다면 

new Date를 활용하면 된다.

Date객체는 활용 범위가 넓은데 제일 간단하게 설정할 수 있는 날짜 셋팅은 아래와 같다고 작성자는 생각한다.

 

예를 들어 2020-03-12 09:00:00 ~ 2020-03-13 23:59:59 사이에 해당하는 로직을 만들고 싶다면

아래와 같이 작성하면 된다.

 

var startTime = new Date('03/12/2020 09:00:00'); //시작기간 셋팅
var endTime = new Date('03/13/2020 23:59:59'); //종료기간 셋팅
var nowTime = new Date(); //현재시간 셋팅

if (nowTime < startTime || endTime > nowTime) { //현재기간이 시작기간보다 지나거나 종료기간이 안될때
     alert('이벤트가 실행되었습니다.'); 
     return false; 
} else {

     alert('이벤트가 종료되었습니다.');

     return false;

}

 

실제로 돌아가는지 궁금하지 않나?

우리는 테스트 해볼 필요가 있다.

크롬 브라우저를 사용중이라면 F12를 눌러 개발자 도구로 들어가서 Console 탭에서 테스트를 할 수 있다.

 

테스트 하기 전 디버깅을 잡아야 한다.

디버깅 방법

1. F12를 눌러 개발자 도구를 들어간다.

2. Sources 탭에 들어가서 실행되고 있는 페이지를 더블 클릭하면 작성한 코드들이 나와있을 것이다.

3. 멈추고자 하는 라인의 번호를 클릭한다. (6번째 라인을 중지하고 싶으므로 숫자 '6'을 클릭) 파란색으로 클릭했다는 표시가 나타난다.

4. F5(새로고침)를 눌러 코드가 재 실행 되도록 한다.

5. 디버깅 시작 (선택했던 라인에서 코드 실행이 일시정지)

여기 까지가 디버깅 방법이다.

 

 

더 나아가 테스트를 해야하므로 변경해보자.

Console탭으로 들어간다.

디버깅 중 실행이 되었던 코드는 변수호출해서 을 볼 수 있다. (전역 변수는 디버깅 끝난 후 확인가능)

 

 

변수들을 확인하여 내가 설정한 값이 맞는지 확인해본다.

(Console창에 변수입력하여 확인하거나 Source코드에서 마우스로 올려놓아도 나타난다.)

현재의 시간은 nowTime 이므로 IF 조건에 맞다. 그러므로 '이벤트가 실행되었습니다.'라는 alert창이 뜰것이다.

(디버깅 중 다음 코드로 넘기는 방법은 F10)

 

 

 

그런데 현재 시간변경해서 이벤트가 종료되는지를 확인하려면

디버깅직접 코드수정해주면 된다.

Console창에서 변경하고자 하는 변수를 셋팅해 주면 된다.

 

 

그 다음 F10을 눌러 진행을 하면

IF 조건에 맞지 않으므로 '이벤트가 종료되었습니다.' 라는 alert창이 나타나게 된다.

 

 

'IT > JavaScript, Jquery' 카테고리의 다른 글

JavaScript - 쿠키 가져오기  (2) 2020.04.09
Javascript, Jquery로 실시간 시간 구하기  (0) 2018.07.22

MS-SQL DB의 SP내용 검색하기 (sys.sql_modules) 

 

테이블 내에서 원하는 데이터검색할 땐 LIKE를 사용한다. 

하지만 접속한 데이터베이스저장프로시저(SP) 내에서 원하는 내용검색할땐? 

이럴 때 필요한게 sys.sql_modules 이다.

 

기본 형식은 아래의 예와 같다고 보면 된다.

 

실전에서 사용해보자.

아래의 Get_TestTable, Get_TestTable2 프로시저가 있다. 

각각의 프로시저 내용안에는 사용되고 있는 TestTable 있는데

여러 SP에서 TestTable이 사용되는 곳을 찾고 싶다면 

sys.sql_modules를 이용하여 검색하면 된다!!!

(LIKE와 동일하게 대소문자 상관없다)

 

 

 

** 참고 : SP - Get_TestTable, Get_TestTable2

 

MS-SQL 커서(Cursor) 사용하기 (행단위 검색)

MS SQL에서 행 단위로 검색해서 데이터를 가공하고 싶거나 처리하고 싶을 때 커서(Cursor)를 활용하면 편리하다.

예를 들면, 아래와 같이 여러행 중에 잘못된 데이터가 들어간 경우만 찾아서 지우고 싶을 때 Cursor를 활용한 경우다.

 

TestTable에는 아래와 같은 데이터가 존재한다.

 

1. Cursor에 사용될 변수를 설정한다.

2. 변수 Cursor를 설정하고

3. Cursor에 담길 데이터를 셋팅한다

4. 선언한 Cursor 변수의 이름으로 Cursor는 시작

5. Cursor 안에서 사용될 (반복문 안에서 사용될) 3. 데이터들의 Row에 해당되는 컬럼들을 위에서 셋팅한 변수로 설정

6. 반복문 시작

7. 데이터 처리 or 가공

8. 다음 행이 셋팅한 변수로 변경

9. Cursor 닫기

10. Cursor 리소스 해제

 

위에 예시로 사용된 Cursor처럼 원하는 Table를 조회하고 반복문 안에서 데이터를 처리 or 가공하면 된다.

 

** 주의해야할 점은 방대한 양의 데이터를 조회해서 Cursor를 사용할 때 처리속도가 느릴 수 있다는 점이다.

데이터 처리 or 가공시에는 아래와 같이 조회를 하여 데이터가 맞게 나오는지 확인 후 Cursor를 사용하자.

 

MS-SQL 로컬 접속 후 DB와 User 생성

SSMS 설치 후 Server에 접속하려면 기본적으로 설정되어 있는 로컬접속을 하면 된다.

 

서버 이름 : (localdb)\MSSQLLocalDB

인증 : Windows 인증

 

 

새로운 DB생성하고자 한다면 

연결된 DB서버에 데이터베이스 -> 새 데이터베이스를 클릭 후 데이터베이스 이름을 입력하고 생성을 해주면 된다.

 

 

생성 후 사용자생성하려면 보안탭에 들어가서

로그인 -> 새 로그인 클릭 후 로그인 이름, SQL Server인증에 암호, 암호확인, 암호 정책 강제 적용, 암호 만료 강제 적용을 체크 후 기본 데이터베이스설정해 주면 된다.

 

 

생성을 했다면 로그인탭에 생성한 유저가 들어와 있을것이다.

이제 이 유저한테 권한을 주면 되는데 

유저속성을 들어가서 줄 수 있다.

 

 

접속 권한 DB를 설정해주고

해당 유저가 어떤 기능까지 수행할지 셋팅해주면 끝나게 된다.

 

db_backupoperator : 백업권한

db_datareader : 사용자 테이블 읽기 권한 (SELECT)

db_datawriter : 사용자 테이블 데이터 추가, 삭제 변경 권한 (INSERT, DELETE, UPDATE)

db_ddladmin : DB에서 모든 DDL 명령 실행 권한 (CREATE, ALTER, DROP, RENAME, TRUNCATE)

db_denydatareader : DB내에 있는 사용자 테이블 읽기 권한

db_denydatawriter : DB내에 있는 사용자 테이블 데이터 추가, 삭제 변경 권한

db_owner : DB내에 있는 모든 권한

db_securityadmin : 멤버 자격 수정, 사용권한 관리 권한

 

확인하고 싶다면 방금 만들었던 해당 유저의 계정으로 접속 후 

DB를 확인하면 된다.

 

+ Recent posts