플라스크 SQLAlchemy 업데이트

Salman Mehmood 2023년6월21일
플라스크 SQLAlchemy 업데이트

이 설명과 함께 Flask 앱의 SQLAlchemy 데이터베이스를 사용하여 행을 삽입하고 업데이트하는 방법을 배웁니다.

Flask 앱의 SQLAlchemy 데이터베이스를 사용하여 행 업데이트

두 개의 필드가 있는 Employee_Model이라는 간단한 모델이 있습니다. 우리는 이 모델에 대해 작업할 것입니다.

from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.sqlite3"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)


class Employee_Model(db.Model):
    Employee_ID = db.Column(db.Integer, primary_key=True)
    Employee_Name = db.Column(db.String(50))
    Employee_Email = db.Column(db.String(100), unique=True)
    Date_Field = db.Column(db.Date, default=datetime.utcnow)

    def __repr__(self):
        return f"<Employee_Model: {self.Employee_Email}>"


if __name__ == "__main__":
    app.run(debug=True)

이제 Python 셸을 열고 Flask 앱에서 dbEmployee_Model을 가져옵니다. 그런 다음 db.create_all()을 사용하여 데이터베이스를 생성합니다.

Employee_Model.query.all()을 사용하여 데이터베이스에 아무것도 없음을 표시합니다.

>>> from app import db,Employee_Model
>>> db.create_all()
>>> Employee_Model.query.all()
[]

이제 가장 먼저 해야 할 일은 데이터를 업데이트하기 전에 데이터베이스에 데이터를 삽입하는 것입니다. 이를 위해 Employee_Model 모델을 인스턴스화합니다.

우리는 그것을 필드로 인스턴스화할 것입니다. 두 필드 모두 자동으로 생성될 수 있으므로 Employee_ID 또는 Date_Field를 사용하지 않습니다.

Employee_ID는 데이터베이스에서 생성되며 Date_Field에는 기본값인 datetime.utcnow가 지정됩니다. 그런 다음 db.session.add()를 사용하여 단일 데이터 행을 추가하고 객체를 전달합니다.

그런 다음 db.session.commit()을 사용하여 데이터를 커밋하여 모든 것을 저장합니다. Employee_Model.query.all() 명령을 실행하면 데이터베이스에서 하나의 Employee를 볼 수 있으며 날짜가 있는 jack.Date_Field를 사용하여 Date_Field 개체를 볼 수 있습니다.

>>> jack=Employee_Model(Employee_Name='jack',Employee_Email='jack@something.com')
>>> db.session.add(jack)
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack@something.com>]
>>> jack.Date_Field
datetime.date(2022, 7, 14)

기본 날짜를 사용하지 않으려면 수동으로 할 수 있습니다. 이를 위해 datetime에서 날짜를 가져온 다음 개체 이름이 laura인 새 직원을 만들 수 있습니다.

Employee_Model() 클래스에 이메일로 이름을 제공한 다음 Date_Field를 전달합니다.

이제 데이터베이스 안에 laura 개체를 추가하고 데이터베이스에 저장해야 합니다. 데이터베이스에서 쿼리를 추출하면 데이터베이스에 두 명의 직원이 표시됩니다.

>>> from datetime import date
>>> from app import db,Employee_Model
>>>laura=Employee_Model(Employee_Name='laura',Employee_Email='laura@something.com',Date_Field=date(2022,7,14))
>>> db.session.add(laura)
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack@something.com>, <Employee: laura@something.com>]

이제 특정 항목에 대한 데이터베이스의 데이터를 업데이트합니다. jack 개체를 쿼리한다고 가정합니다.

이를 위해 filter_by(Employee_Name='jack')를 사용하여 jack 개체를 필터링합니다. 즉, 이름이 jack인 행을 찾습니다. 첫 번째 결과를 얻고 싶고 고유해야 합니다.

이제 할당 연산자를 사용하여 Employee_Email 필드를 업데이트한 다음 커밋하여 업데이트된 레코드를 데이터베이스에 저장합니다. 쿼리를 수행하고 데이터베이스의 모든 사용자를 가져올 때 jack@something.com 대신 jack123@something.com이 표시됩니다.

>>> from app import db,Employee_Model
>>> jack=Employee_Model.query.filter_by(Employee_Name='jack').first()
>>> jack
<Employee: jack@something.com>
>>> jack.Employee_Email='jack123@something.com'
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack123@something.com>, <Employee: laura@something.com>]
>>> jack.Employee_Email
'jack123@something.com'
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Flask SQLAlchemy