[PYTHON] WHERE를 사용하여 SQLAlchemy Core의 일괄 업데이트
PYTHONWHERE를 사용하여 SQLAlchemy Core의 일괄 업데이트
필자는 SQLAlchemy의 대량 삽입 작업을 다음과 같이 처리했습니다.
conn.execute(addresses.insert(), [
{'user_id': 1, 'email_address' : 'jack@yahoo.com'},
{'user_id': 1, 'email_address' : 'jack@msn.com'},
{'user_id': 2, 'email_address' : 'www@www.org'},
{'user_id': 2, 'email_address' : 'wendy@aol.com'},
])
지금 필요한 것은 업데이트와 비슷한 것입니다. 나는 이것을 시도했다.
conn.execute(addresses.insert(), [
{'user_id': 1, 'email_address' : 'jack@yahoo.com', 'id':12},
{'user_id': 1, 'email_address' : 'jack@msn.com', 'id':13},
{'user_id': 2, 'email_address' : 'www@www.org', 'id':14},
{'user_id': 2, 'email_address' : 'wendy@aol.com', 'id':15},
])
'id'필드에 따라 각 행이 업데이트되지만 작동하지 않습니다. WHERE 절을 지정하지 않았으므로 가정합니다. 그러나 사전에 포함 된 데이터를 사용하여 WHERE 절을 지정하는 방법을 알지 못합니다.
누군가 나를 도울 수 있습니까?
해결법
-
==============================
1.문서의 삽입, 업데이트 및 삭제 섹션을 읽으십시오. 다음 코드를 시작해야합니다.
문서의 삽입, 업데이트 및 삭제 섹션을 읽으십시오. 다음 코드를 시작해야합니다.
from sqlalchemy.sql.expression import bindparam stmt = addresses.update().\ where(addresses.c.id == bindparam('_id')).\ values({ 'user_id': bindparam('user_id'), 'email_address': bindparam('email_address'), }) conn.execute(stmt, [ {'user_id': 1, 'email_address' : 'jack@yahoo.com', '_id':1}, {'user_id': 1, 'email_address' : 'jack@msn.com', '_id':2}, {'user_id': 2, 'email_address' : 'www@www.org', '_id':3}, {'user_id': 2, 'email_address' : 'wendy@aol.com', '_id':4}, ])
-
==============================
2.Flask Session은 bulk_insert_mappings 및 bulk_update_mappings 함수를 가지고 있습니다. 여기를 확인하십시오.
Flask Session은 bulk_insert_mappings 및 bulk_update_mappings 함수를 가지고 있습니다. 여기를 확인하십시오.
매핑시 기본 키를 제공해야한다는 점에 유의하십시오.
# List of dictionary including primary key user_mappings = [{ 'user_id': 1, # This is pk? 'email_address': 'jack@yahoo.com', '_id': 1 }, ...] session.bulk_update_mappings(User, user_mappings) session.commit()
from https://stackoverflow.com/questions/25694234/bulk-update-in-sqlalchemy-core-using-where by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 UTC 시간을 얻는 방법? (0) | 2018.10.29 |
---|---|
[PYTHON] 파이썬 문자열에서 빈 줄을 제거하는 빠른 일렬 라이너 란 무엇입니까? (0) | 2018.10.29 |
[PYTHON] Python으로 csv 파일에 헤더 추가 (0) | 2018.10.29 |
[PYTHON] 파이썬에서의 엡실론 값 (0) | 2018.10.29 |
[PYTHON] 파이썬 : 주어진 날짜로부터 주 데이터의 시작과 끝주기 (0) | 2018.10.29 |