인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

병맛과학님의 프로필 이미지
병맛과학

작성한 질문수

가장 빠른 풀스택: 파이썬 백엔드와 웹기술 부트캠프 (flask/플라스크와 백엔드 기본) [풀스택 Part1-1]

초간단 배포 기술과 향후 학습 로드맵

수업내용 질문 건

작성

·

76

0

메일 dream@fun-coding.org 이곳으로 질문하려고 하니, 제 계정이 수강하고 있지 않다고 오류가 발생하여 이곳에 질문을 남깁니다.

저는 벌써 '처음하는 SQL과 데이터베이스(MySQL) 부트캠프', '처음하는 MongoDB(몽고DB)와 NoSQL(빅데이터) 부트캠프'를 듣고 지금은 '파이썬 백엔드와 웬기술 부트캠프' 세개의 강좌를 수강했습니다.

저는 제가 개인적으로 연구한 연구내용을 백엔드를 이용하여 웹사이트에 시각화하는 웹사이트를 만들어보려고 했습니다. SQL 데이터를 벡엔드를 이용해 웹사이트에 시각화 하는 수업을 기대했지만 그런 내용은 들어있지 않았습니다

 

제가 직접 만들어보고자 준비를 할 때에 몇가지 질문이 있습니다.

 

  1. 다음은 수업 내용 중'user_mgmt.py'의 코드 내용입니다.

class User(UserMixin):

    def init(self, user_id, user_email, blog_id):

        self.id = user_id

        self.user_email = user_email

        self.blog_id = blog_id


    def get_id(self):

        return str(self.id)

   

    @staticmethod

    def get(user_id):

        mysql_db = conn_mysqldb()

        db_cursor = mysql_db.cursor()

        sql = "SELECT * FROM user_info WHERE USER_ID ='"+ str(user_id) +"'"

        db_cursor.execute(sql)


        user = db_cursor.fetchone()

        if not user:

            return None

        user = User(user_id=user[0], user_email=user[1], blog_id=user[2])

        return user

   

    @staticmethod

    def find(user_email):

        mysql_db = conn_mysqldb()

        db_cursor = mysql_db.cursor()

        sql = "SELECT * FROM user_info WHERE USER_ID ='"+ str(user_email) +"'"

        db_cursor.execute(sql)


        user = db_cursor.fetchone()

        if not user:

            return None

        user = User(user_id=user[0], user_email=user[1], blog_id=user[2])

        return user


    @staticmethod

    def create(user_email, blog_id):

        user = User.find(user_email)

        if user ==None:

            mysql_db = conn_mysqldb()

            db_cursor = mysql_db.cursor()

            sql ="INSERT INTO user_info (USER_EMAIL, BLOG_ID) VALUES ('%s','%s')" % (str(user_email), str(blog_id))

            db_cursor.execute(sql)

            mysql_db.commit()

            return User.find(user_email)

        else:

            return user

이렇게 코드내용이 존재할 때, 로그인 하게 되면 user_id, user_email, blog_id 라는 컬럼을 가진 mysql_db db내용이 새로운 이름의 sql 파일이 따로 생겨서 저장되는 것인가요? 

2. 이미지 파일을 sql파일에 x,y,r,g,b 컬럼을 만들고 (0,0) xy 좌표에 (100,200,100) 의 rgb 값이 있다는 의미로 0,0,100,200,100의 값을 모으고, 만약 32x,32의 크기를 가진 이미지가 있다면 1024의 값이 존재하는 이미지 정보를 sql 파일에 저장하고 이를 10000장 정도 보관하는 sql 파일을 만드는 경우가 있나요? 아니면 같은 방식으로 10000장의 이미지 파일을 json 파일로 변환하는 경우도 있나요?

3. 제가 만약 백엔드를 이용하여 sql파일의 내용을 웹사이트에 시각화하는 것이 가능한가요?

 

답변 1

0

안녕하세요. 

우선 본 강의 내용에 대한 질문/답변 외에, 각자 작성하시는 코드를 디버깅해드리거나, 함께 작업해드리는 것은 아무래도 본 강의가 평생 강의이기도 해서, 무리가 있어요. 이 부분은 양해부탁드려요.

각자 작성하신 코드라 저희도 한참 코드를 이해해봐야 하고, 결과적으로 개발을 해봐야 하다보니, 무리라는 점은 충분히 이해하실 수 있으실 것 같습니다.

가볍게만 참고할만한 의견만 드립니다.

1. 로그인 시 user_mgmt.py 코드에서의 동작

코드에서 설명된 내용에 따르면, 로그인 시 새로운 SQL 파일이 생성되지는 않습니다. 대신, user_mgmt.py 코드에서는 MySQL 데이터베이스에 연결하여 사용자를 관리합니다.

코드에서 User 클래스는 사용자의 정보를 다루고 있으며, 주요 기능은 다음과 같습니다:

  • get(user_id): 특정 user_id로 사용자를 조회합니다. MySQL 데이터베이스에서 해당 사용자의 정보를 가져오며, 이 정보가 존재하지 않으면 None을 반환합니다.

  • find(user_email): 특정 user_email로 사용자를 조회합니다. 이 또한 MySQL 데이터베이스에서 조회합니다.

  • create(user_email, blog_id): 새로운 사용자를 데이터베이스에 추가합니다. 만약 이미 해당 user_email이 데이터베이스에 존재하면, 새로운 사용자를 생성하지 않고 기존 사용자를 반환합니다.

이 코드의 동작을 통해 알 수 있듯이, MySQL 데이터베이스에 새로운 데이터가 추가될 때마다 별도의 SQL 파일이 생성되는 것이 아니라, 이미 존재하는 데이터베이스에 INSERT, SELECT 쿼리를 통해 데이터를 관리하게 됩니다.

따라서 사용자가 로그인할 때 새로운 SQL 파일이 생성되는 것이 아니라, MySQL 데이터베이스 테이블(user_info)에 데이터를 저장하거나 조회하게 됩니다.

2. 이미지 데이터를 SQL 또는 JSON 파일로 저장하는 경우

이미지 데이터를 SQL 파일이나 JSON 파일로 변환하여 저장하는 방식은 다음과 같습니다.

  • SQL 파일에 이미지 데이터 저장:

    • 이미지 데이터를 데이터베이스에 저장할 때는 일반적으로 이미지를 바이너리 데이터로 변환한 후 BLOB(Binary Large Object) 형태로 저장하거나, 이미지의 각 픽셀 정보를 RGB 값으로 변환하여 별도의 테이블에 저장할 수 있습니다. 예를 들어, 32x32 크기의 이미지라면 각 픽셀에 대한 RGB 값을 저장하게 되고, 해당 테이블에는 x, y, r, g, b 등의 컬럼이 존재하게 됩니다. 10000장의 이미지를 저장한다면 매우 큰 데이터셋이 될 수 있습니다.

  • JSON 파일에 이미지 데이터 저장:

    • 이미지 데이터를 JSON 파일로 저장하는 경우, 각 픽셀의 위치와 RGB 값을 JSON 객체로 표현할 수 있습니다. 예를 들어, 하나의 이미지에 대해 32x32 크기의 픽셀 데이터가 JSON으로 저장될 수 있습니다. 하지만 10000장의 이미지를 JSON 파일로 저장하면 파일 크기가 매우 커지고, 처리 속도가 느려질 수 있습니다.

위와 같은 방식으로 이미지 데이터를 SQL 데이터베이스나 JSON 파일에 저장할 수 있지만, 대규모의 이미지 데이터를 처리하는 경우 데이터베이스를 사용하는 것이 더 효율적일 수 있습니다. 특히 SQL 데이터베이스는 대량의 데이터를 효율적으로 관리하고, 쿼리를 통해 필요한 데이터를 빠르게 검색할 수 있는 장점이 있습니다.

 

3. 백엔드를 이용하여 웹사이트 시각화는 가능합니다.

관련해서는 가장 빠른 풀스택 로드맵의 flutter 외의 모든 기술이 필요하긴 해서, 이 부분도 참고해보시면 좋을 것 같습니다.

감사합니다.

병맛과학님의 프로필 이미지
병맛과학

작성한 질문수

질문하기