0
나는 sqlalchemy (내 기본 db는 PostgreSQL 8.4)를 사용하여 다음 함수를 작성했습니다. 나는 다음 스키마 있습니다오류시 행을 삭제하지 않는 sqlalchemy
CREATE TABLE temporary_data_key (
id SERIAL PRIMARY KEY,
key VARCHAR(36) NOT NULL
);
CREATE UNIQUE INDEX idxu_temp_data_nm ON temporary_data_key (key);
CREATE TABLE temporary_data (
key_id INTEGER REFERENCES temporary_data_key(id) ON UPDATE CASCADE ON DELETE RESTRICT NOT NULL,
id_value INTEGER CHECK (id_value > 0) NOT NULL
);
가 나는 기능 자체가 뒤처리를 할 것으로 예상 (를 즉 temporary_table_key 테이블에서 생성 된 키를 제거) 에러가 발생했을 경우 - 어떤 이유로, 테이블이 삭제되지 될 때 예외가 발생합니다. 함수가 예외 처리의 일환으로 temporary_data 키를 청소되지 않는 이유
def storeIdsInTemporaryTable(dbinfo, id_list):
conn = dbinfo['db_connection']
metadata = dbinfo['metadata']
tableinfo = Table('temporary_data', metadata, autoload=True)
datarows = []
temp_dbinfo = {'db_connection': conn, 'table': tableinfo, 'datarows': datarows }
guid = genutils.getGUID()
sql = "INSERT INTO temporary_data_key (key) VALUES ('{0}') RETURNING id".format(guid)
key_id = executeSQLonDbConnection(temp_dbinfo, sql, return_field='id')
for id_value in id_list:
datarows.append({ 'key_id': key_id, 'id_value': id_value })
try:
insertToDb(temp_dbinfo)
except Exception as e:
print 'ERROR:',e
guid = None # to indicate an error occured
if key_id:
conn.execute("DELETE FROM temporary_data_key WHERE key='{0}'".format(key_id))
return guid
사람이 자리 수 : 여기
는 기능입니다?