python, SQL 데이터 불러올때 테이블명 제거방법이 궁금합니다.

조회수 924회

현재 파이썬에서 flas sqlAlchemy 써서 PostgreSQL(DB)에 있는 Student라는 테이블의 값들 db.session.query로 불러 오고 있는데요.

값을 불러오면 테이블명, 속성명이 '' 같이 묶이는데요(테이블명+속성값(Student_id))

속성값만 따로 불러 오거나 언더바를 제거 할수 있을까요? 구글링 해서 속성값만 가져오는 설정이 있을거 같아 찾아봤는데 아직 못찾았습니다.ㅠ

키값에 .replace("__"," ")로 제거하려했는데 튜플로 묶여 있어서 적용이 안되더라고요.

데이터베이스

Student[DB테이블 이름]
------------------------
[속성 값]
id:1
name:학생1
age:20

dbquery.py

records = db.session.execute(db.session.query(Student))
for row in records:
    result.append(dict(row))

print(result)

결과:[{'Student_id':1,'Student_name':'학생1','Student_age':20}]

제가 원하는 결과

결과:[{'id':1,'name':'학생1','age':20}] or [{'StudentId':1,'StudentName':'학생1','StudentAge':20}]

==========================추가 입니다.============================

models.py

import datetime
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.ext.declarative import declarative_base

class Student(Base):
    __tablename__ = 'Student'
    name=Column(String(100), nullable=False)
    id = Column(Integer, primary_key=True, autoincrement=True)
    age = Column(Integer, default=0)

database.py

import os
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import scoped_session, sessionmaker, joinedload
from models import Base

basedir = os.path.abspath(os.path.dirname(__file__))
engine = create_engine('postgresql+psycopg2://Project:0000@localhost/Project1',pool_size=150, max_overflow=130)

metadata = MetaData()
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))

def create_tables():
    Base.metadata.create_all(bind=engine)

_ _ init _ _.py

create_tables()
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • Student 모델 소스코드를 보여주세요. 정영훈 2019.2.13 00:06
  • Student 모델 부분 소스코드 추가 하였습니다. 알 수 없는 사용자 2019.2.13 14:54

2 답변

  • records = db.session.execute(db.session.query(Student))
    

    상기 부분을 아래와 같이 수정하세요.

    records  = db.session.query(Student).all()
    

    아래와 같이 하여 확인해보세요.

    records[0].__dict__
    
  • 추가 답변 남겨요.

    기존에 파이썬에서 postgreSQL의 table을 불러올 때 ORM방식으로 만들어서 불러왔기 때문에, 해당 테이블에 대한 정보도 같이 딸려왔었습니다.
    예를들면 학생 테이블의 'Student_id' 처럼 id 앞에 Student 입니다.
    dbquery.py에서 안에 .items로 key,value 받아와서 업데이트하는 방식으로 추가하였습니다. 참고가 되셨으면 좋겠네요.

    result = list()
    records = db.session.execute(db.session.query(Student))
    for row in records:
       dict_value = dict()
       for x,y in row.items():
          dict_value.update({x:y})
    
       result.update(dict_value)
    
    print(result)
    
    결과:[{'id':1,'name':'학생1','age':20}]
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)