728x90
반응형

파이썬 11

SQLAlchemy 같은 테이블에 여러 개의 Foreign key 연결하기

문제상황 class User(db.Model): ... class Store(db.Model): ... # 메인 유저 main_user = db.Column(db.Integer, db.ForeignKey('user.id')) user_main = db.relationship('User', backref=db.backref('store_by_main', uselist=False)) # 서브 유저 sub_user = db.Column(db.Integer, db.ForeignKey('user.id')) user_sub = db.relationship('User', backref=db.backref('store_by_sub', uselist=False)) 그냥 연결하면 Ambiguouse 외래키라고 아래처럼 에..

IT/파이썬 2021.12.13

SQLAlchemy One to One 설정하기 (backref와 back_populates 차이)

원래 양방향 참조를 하려면 부모/자식 엔티티 각각에서 back_populates를 해줘야 함 class Parent(Base): __tablename__ = 'parent' id = Column(Integer, primary_key=True) children = relationship("Child", back_populates="parent") # on the parent class class Child(Base): __tablename__ = 'child' id = Column(Integer, primary_key=True) parent_id = Column(Integer, ForeignKey('parent.id')) parent = relationship("Parent", back_populates=..

IT/파이썬 2021.12.10

파이썬 현재시각 가져오기 : module 'datetime' has no attribute 'now'

현재 날짜를 가져오려고 datetime을 이용했다 import datetime ... create_time=datetime.now() 그런데 안됨 그런 어트리뷰트 없다고 에러뜸 module 'datetime' has no attribute 'now' 임포트 방법을 수정 from datetime import datetime ... create_time=datetime.now() from datetime을 추가해서 임포트했다 from에서 받는 datetime은 datetime 모듈이고 import에서 받는 datetime은 동명의 모듈의 하위클래스이다. 내가 쓰려고 한 now() 메소드는 datetime.datetime.now()인 것이기 때문에 datetime 하나만 쓰려면 저렇게 명시해줘야 한다...

IT/파이썬 2021.12.08

플라스크에서 ORM 사용하기 5 - db에 데이터 넣기

html submit 누르면 answer 블루프린트의 create 함수 찾아감 post로 보냈으므로 받는쪽도 post여야함 blueprint from flask import Blueprint, url_for, request from werkzeug.utils import redirect from datetime import datetime from pybo import db from pybo.models import Answer, Question bp = Blueprint('answer', __name__, url_prefix='/answer') @bp.route('/crate/', methods=('POST',)) def create(question_id): question = Question.quer..

IT/파이썬 2021.05.24

플라스크에서 ORM 사용하기 4 - 라우팅

파라메터 받기 @bp.route('/detail//') def detail(question_id): question = Question.query.get(question_id) return render_template('question/question_detail.html', question=question) 없는 question_id 요청할때 404 띄우기 get_or_404 question = Question.query.get_or_404(question_id) redirect url_for와 redirect 임포트 필수 from flask import Blueprint, url_for from werkzeug.utils import redirect ... @bp.route('/') def index..

IT/파이썬 2021.05.24

플라스크에서 ORM 사용하기 3 - db에서 데이터 가져오기

현재 db 블루프린트 파일 (main_views.py) 수정 render_tempate 추가하고 pybo.models에서 Question에 대한 쿼리 작성해서 넣어줌 from flask import Blueprint, render_template from pybo.models import Question ... @bp.route('/') def index(): question_list = Question.query.order_by(Question.create_date.desc()) return render_template('question/question_list.html', question_list=question_list) 리턴할 question/question_list.htm 파일 작성 파일 경로는..

IT/파이썬 2021.05.24

플라스크에서 ORM 사용하기 2 - 모델 및 테이블 생성

모델 생성 from pybo import db # Question 테이블 스키마 정의하는 클래스 class Question(db.Model): id = db.Column(db.Integer, primary_key=True) subject = db.Column(db.String(200), nullable=False) content = db.Column(db.Text(), nullable=False) create_date = db.Column(db.DateTime(), nullable=False) class Question(db.Model) flask db migrate INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runti..

IT/파이썬 2021.05.23

플라스크에서 ORM 사용하기 1

SQLAlchemy : 플라스크 ORM 라이브러리 중 하나 Flask-Migrate : 파이썬 모델을 이용해 테이블 생성, 컬럼 추가 등 하게 해주는 라이브러리 * ORM이란? 2019.08.27 - [IT/자바] - ORM, JPA, Hibernate 설치 Flask-Migrate 설치하면 SQLAlchemy도 같이 설치됨 (myproject) C:\projects\myproject>pip install Flask-Migrate Collecting Flask-Migrate Downloading Flask_Migrate-3.0.0-py2.py3-none-any.whl (12 kB) . . . Successfully installed Flask-Migrate-3.0.0 Flask-SQLAlchemy-2.5..

IT/파이썬 2021.05.23

플라스크 블루프린트

블루프린트 mvc에서의 컨트롤러라고 생각하면 되겠다 라우팅 함수들을 모아두는 파일 블루프린트 파일 생성 main_views.py from flask import Blueprint # 프리픽스 지정 bp = Blueprint('main', __name__, url_prefix='/') # @app.route 아닌 bp.route @bp.route('/') def hello_pybo(): return 'Hello blueprint pybo' app 객체 있는 곳에서 bp 객체 등록 __init__.py from flask import Flask def create_app(): app = Flask(__name__) # 기존 라우팅 제거 # @app.route('/') # def hello_pybo(): # ..

IT/파이썬 2021.05.21
300x250
반응형