def update_with_data(user_id: int, donor_data: dict): if donor_data: query_text = 'UPDATE "Donor" SET ({columns}) = ({values}) WHERE "id" = ${user_param}' columns, values_len, values = create_query_text(donor_data) values.append(user_id) query = query_text.format(columns=columns, values=values_len, user_param=len(values)) with pg.DB(**CONFIG_PARAMS) as conn: conn.query(query, *values)
def upsert_request(request_info: dict): query_text = ''' INSERT INTO "Request" ({columns}) VALUES ({values}) ON CONFLICT ("user_id") WHERE "registration_flag" Is FALSE DO UPDATE SET ({columns}) = ({values})''' columns, values_len, values = create_query_text(request_info) query = query_text.format(columns=columns, values=values_len) with pg.DB(**CONFIG_PARAMS) as conn: conn.query(query, *values)
def update_request(request_info, user_id): query_text = ''' UPDATE "Request" SET ({columns}) = ({values}) WHERE "user_id" = ${user_id} AND "registration_flag" Is FALSE ''' columns, values_len, values = create_query_text(request_info) values.append(user_id) query = query_text.format(columns=columns, values=values_len, user_id=len(values)) print(query) with pg.DB(**CONFIG_PARAMS) as conn: conn.query(query, *values)
def get_donor_data(user_id: int) -> tuple: """ использовать только если донор есть в базе :param user_id: :return: неизменяймый список типа: (id(int), blood_type(smallint), rhesus(1/0), birth_date(datetime.date(1994, 12, 07)), longitude(real), latitude(real)) """ query_text = 'SELECT * FROM "Donor" WHERE "id" = $1' with pg.DB(**CONFIG_PARAMS) as conn: return conn.query(query_text, user_id).getresult()[0]
def try_exist(user_id: int): query_text = 'SELECT EXISTS (SELECT 1 FROM "Donor" WHERE "id" = $1)' with pg.DB(**CONFIG_PARAMS) as conn: return conn.query(query_text, user_id).getresult()[0][0]
def new_donor(donor_info: dict): query_text = 'INSERT INTO "Donor" ({columns}) VALUES ({values})' columns, values_len, values = create_query_text(donor_info) query = query_text.format(columns=columns, values=values_len) with pg.DB(**CONFIG_PARAMS) as conn: conn.query(query, *values)