한글 컬럼명 테이블 ms sql azure python django 생성하기

sumin·2021년 8월 19일
0

이번 요구사항은 tableu 사용자가 테이블을 쓸때 한글이면 좋겠다는 요구사항이 들어와 컬럼명을 한글로 해야하는 TASK였다.

django app으로 서버를 만들 때, models.py에 class로 테이블 스키마를 정의하면 makemigration, migrates시 DB table을 실행해주는 기능이 있다.

문제는, 한글로..만들어야 하는 케이스에는 파이썬의 class명이 한글이면 ... 무..물론 파이썬 한글변수는 유니코드를 사용하기 때문에 가능하다

유니코드 방식을 사용하기 때문에 한글 변수명도 지원합니다.

파이썬 = 1
김왼손 = 20

from: https://programmers.co.kr/learn/courses/29/lessons/1785

나는 엑셀파일을 읽어서 각종 문서 정제작업과 columns이 이중 인덱스로 되어있는 것을 하나로 만든 뒤 table 생성 후 적재하는 게 task 였으므로,
개인적으로 models.py에 컬럼명 75개씩이나 하는 걸 일일이 적기는 싫었다....그리고 적지 않아도 되는 방법을 생각해보니 table을 생성하는 sql statement를 직접 만들어 실행하도록 하는 게 제일 나아 보였다. 실은 다른 방법을 못 찾겠다.ㅋ

우선 정제 작업시 필드명은 공백을 '_' 언더바로 바꿨고,
()괄호를 없애달라는 요구사항도 바꿨다. 그리고 Item No. 같은 경우도 ItemNo 로 바꿨다.

그리고 필드명과 타입 등을 명시한 리스트로 create sql statement를 만든 뒤, 이를 db에 때려느<- 이 말투 요즘 재미있다.ㅋㅋ

db에 넣는 코드는 다음과 같다.

import pyodbc
statement= create_sql_for_MS_SQL(a.header)
print(statement)
import pyodbc
server = 'localhost'
database = 'id'
username = 'user'
password = 'pwd'
driver= '{ODBC Driver 17 for SQL Server}'

with pyodbc.connect('DRIVER='+driver+';SERVER=tcp:'+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
    with conn.cursor() as cursor:
        cursor.execute(statement)
        #this section will only return the last result from the query
        while cursor.nextset():
            try:
                rows = cursor.fetchone()
                print(rows[0])
            except Exception as e:
                print("Skipping non rs message: {}".format(e))
            continue
            
profile
sumin

0개의 댓글