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()
-
(•́ ✖ •̀)
알 수 없는 사용자
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}]
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력