Flask 를 사용 하여 my sql 의 기본 동작 을 실현 합 니 다.

4162 단어 Python
SQLAlchemy 작업 데이터 베 이 스 를 사용 합 니 다.
데이터베이스 작업 을 간소화 하기 위해 서 저 희 는 SQLAlchemy 데이터베이스 도구(ORM,즉 대상 관계 맵)를 사용 할 것 입 니 다.SQLAlchemy 를 통 해 데이터베이스 에 있 는 표(클래스 속성 표시 표 의 필드/열)를 Python 클래스 로 정의 할 수 있 습 니 다.이 클래스 에 대해 서 는 SQL 문 구 를 쓰 는 대신 여러 가지 조작 을 할 수 있 습 니 다.이 열 을 우 리 는 모델 류 라 고 부 릅 니 다.클래스 의 속성 을 필드 라 고 부 릅 니 다.
Flask 는 대량의 제3자 확장 이 있 는데 이런 확장 은 제3자 라 이브 러 리 와 의 통합 작업 을 간소화 할 수 있다.
우선 우 리 는 조작 을 초기 화해 야 한다.확장 클래스 가 져 오기,예시 화 및 Flask 프로그램 인 스 턴 스 전송:
from  flask import Flask
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
db=SQLAlchemy(app)

설정 매개 변수
class Config(object):
    """    """
    #sqlalchemy     
    SQLALCHEMY_DATABASE_URI="mysql://root:[email protected]:3306/db_python04"
    #  sqlalchemy       
    SQLALCHEMY_TRACK_MODIFICATIONS=True
app.config.from_object(Config)

SQLALCHEMY_DATABASE_URL 구성:데이터베이스 형식 이름://데이터베이스 사용자 이름:비밀번호@주소:포트/데이터베이스 이름
데이터베이스 연결 주소 알려 주기
데이터베이스 모델 만 들 기
class Role(db.Model):
    """    /   """
    __tablename__="tbl_roles"
    id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String(32),unique=True)
    users=db.relationship("User",backref="role")
class  User(db.Model):
    """   """
    __tablename__="tbl_users" #       
    id=db.Column(db.Integer,primary_key=True) #               
    name=db.Column(db.String(64),unique=True) #   
    email=db.Column(db.String(128),unique=True)
    password=db.Column(db.String(128))
    role_id=db.Column(db.Integer,db.ForeignKey("tbl_roles.id")) #    

모델 클래스 의 작성 제한:
  •  모델 클래스 는 db.Model
  • 계승 을 성명 해 야 합 니 다.
  • 모든 클래스 속성(필드)은 db.Column 을 예화 해 야 합 니 다.들 어 오 는 매개 변 수 는 필드 형식
  •   db.Column()  필드 를 설정 할 수 있 는 추가 옵션(인자)을 추가 합 니 다.예 를 들 어,primary_key 현재 필드 를 주 키 로 설정 합 니 다.이외에 도 자주 사용 하 는 옵션 이 있 습 니 다.  nullable(불 값,빈 값 으로 허용 되 는 지 여부),index(불 값,색인 설정 여부),unique(불 값,중복 값 허용 여부),default(기본 값 설정)등.

  • 자주 사용 하 는 필드 형식 은 다음 과 같 습 니 다.
  • db.Interger  정형
  • db.String(size)문자열,size 는 최대 길이
  • db.text()텍스트 형식
  • db.float()부동 소수점 형
  • d.boolean()불 형
  • 데이터베이스 시트 만 들 기
    #  drop_all           
        db.drop_all()
        #      
        db.create_all()

    db.drop_all()이전에 만 든 모든 데 이 터 를 삭제 합 니 다.
    db.create_all()모든 테이블 만 들 기
    창설
      role1=Role(name="admin")
        #session      
        db.session.add(role1)
        #         
        db.session.commit()

    마지막 줄  db.session.commit()  중요 합 니 다.이 줄 을 호출 해야만 진정 으로 기록 을 데이터베이스 에 제출 할 수 있 습 니 다.앞의 것 입 니 다.  db.session.add()  호출 은 변경 사항 을 데이터베이스 세 션(임시 영역)에 추가 합 니 다. 
    읽 기
    모델 류 의 query 속성 을 선택 할 수 있 는 여과 방법 으로 호출 하면 하나의 기록 이나 여러 개의 기록 을 얻 을 수 있 습 니 다(모델 류 의 인 스 턴 스 로 기록 합 니 다).검색 어 는 다음 과 같 습 니 다.
    .query..

    다음은 자주 사용 하 는 필터 방법 입 니 다.
  • filter():지정 한 규칙 필터 기록 을 사용 하여 새로 생 긴 조회 대상 을 되 돌려 줍 니 다
  • filter_by():지정 한 규칙 필터 기록(키워드 표현 식 으로)을 사용 하여 새로 생 긴 조회 대상
  • order_by():지 정 된 조건 에 따라 기록 을 정렬 하고 새로 생 긴 조회 대상
  • group_by():지 정 된 조건 에 따라 기록 을 그룹 으로 나 누고 새로운 조회 대상
  • 다음은 자주 사용 하 는 조회 방법 입 니 다.
  • all():모든 조회 기록 을 포함 하 는 목록 을 되 돌려 줍 니 다
  • first():검색 의 첫 번 째 기록 을 되 돌려 줍 니 다.찾 지 못 하면 None
  • get(id):주 키 값 을 매개 변수 로 입력 하고 지정 한 주 키 값 의 기록 을 되 돌려 줍 니 다.찾 지 못 하면 None
  • count():검색 결 과 를 되 돌려 주 는 수량
  • first_or_404():검색 의 첫 번 째 기록 을 되 돌려 줍 니 다.찾 지 못 하면 404 오류 응답
  • get_or_404(id):주 키 값 을 매개 변수 로 입력 하고 지정 한 주 키 값 의 기록 을 되 돌려 줍 니 다.찾 지 못 하면 404 오류 응답
  • paginate():pagination 대상 을 되 돌려 줍 니 다.기록 을 페이지 별로 처리 할 수 있 습 니 다
  •  
    업데이트 
        user=User.query.get(1)
        user.name="li"
        user.email="[email protected]"
        db.session.commit()
    

    User 표 의 메 인 키 가 1 인 데 이 터 를 업데이트 합 니 다.이름 은 li 로 바 꾸 고 email 은 1 로 바 꿉 니 다[email protected]
     
    삭제
        user=User.query.get(1)
        db.session.delete(user)
        db.session.commit()

    홈 키 가 1 인 데이터 삭제

    좋은 웹페이지 즐겨찾기