플라스크 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 앱에서 db
및 Employee_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'
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