SQLAlchemy 행 항목 업데이트 방법 (Python, SQLAlchemy, Flask-SQLAlchemy)
SQLAlchemy 행 항목 업데이트 방법 (Python, SQLAlchemy, Flask-SQLAlchemy)
이 글에서는 SQLAlchemy를 사용하여 데이터베이스 테이블의 행 항목을 업데이트하는 방법에 대해 살펴보겠습니다. 두 가지 주요 방법을 살펴볼 것입니다.
ORM 방식:
ORM 방식은 Python 객체를 사용하여 데이터베이스 행을 나타내고 조작하는 것을 의미합니다.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120))
# 특정 ID의 사용자 이름 업데이트
user = User.query.get(1)
user.name = "새로운 이름"
db.session.commit()
Core 방식:
Core 방식은 SQL 표현식을 직접 사용하여 데이터베이스와 상호 작용하는 것을 의미합니다.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///database.db')
# 특정 ID의 사용자 이름 업데이트
with engine.connect() as connection:
connection.execute(
"UPDATE users SET name = :new_name WHERE id = :user_id",
new_name="새로운 이름",
user_id=1
)
두 방법 모두 동일한 결과를 제공하지만, ORM 방식은 일반적으로 더 명확하고 코드 관리하기 쉽습니다.
참고:
db.session.commit()
를 호출해야 변경 사항이 데이터베이스에 저장됩니다.
추가 정보
예제 코드: Flask-SQLAlchemy를 사용하여 데이터베이스 행 업데이트
설정:
먼저 Flask 응용 프로그램과 Flask-SQLAlchemy 확장을 설정해야 합니다.
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
모델 정의:
다음으로 데이터베이스 테이블을 나타내는 모델을 정의해야 합니다.
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120))
업데이트 루트:
다음은 사용자 이름을 업데이트하는 데 사용할 수 있는 Flask 라우트입니다.
@app.route('/update_user/<int:user_id>', methods=['POST'])
def update_user(user_id):
# 요청에서 새로운 이름 가져오기
new_name = request.form['name']
# 특정 ID의 사용자 가져오기
user = User.query.get(user_id)
# 사용자 이름 업데이트
user.name = new_name
# 변경 사항 커밋
db.session.commit()
# 업데이트된 사용자 정보 표시
return render_template('user_profile.html', user=user)
사용:
이제 다음 URL을 방문하여 사용자 이름을 업데이트할 수 있습니다.
http://localhost:5000/update_user/1
여기서 1
은 업데이트하려는 사용자의 ID입니다. 또한 name
폼 필드에 새 이름을 입력해야 합니다.
- 이것은 기본 예제일 뿐이며 더 복잡한 업데이트 작업을 수행하도록 확장할 수 있습니다.
- 오류 처리 및 유효성 검증을 코드에 추가하는 것이 좋습니다.
추가 정보
SQLAlchemy 행 항목 업데이트의 대체 방법
update() 메서드:
update()
메서드는 특정 열의 값을 업데이트하는 데 사용할 수 있는 간단한 방법입니다.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120))
# 특정 ID의 사용자 이름 업데이트
user = User.query.get(1)
user.update(name="새로운 이름")
db.session.commit()
filter() 및 update() 조합:
filter()
및 update()
함수를 조합하여 특정 조건을 충족하는 행을 업데이트할 수 있습니다.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120))
# 특정 이메일을 가진 모든 사용자의 이름 업데이트
User.query.filter(User.email == "[email protected]").update(name="새로운 이름")
db.session.commit()
DML 문 사용:
INSERT
, UPDATE
, DELETE
와 같은 DML(Data Manipulation Language) 문을 직접 사용하여 데이터베이스를 업데이트할 수도 있습니다.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///database.db')
# 특정 ID의 사용자 이름 업데이트
with engine.connect() as connection:
connection.execute(
"UPDATE users SET name = :new_name WHERE id = :user_id",
new_name="새로운 이름",
user_id=1
)
- 각 방법마다 장단점이 있습니다. 특정 상황에 가장 적합한 방법을 선택하십시오.
추가 정보
python sqlalchemy flask-sqlalchemy