Как использовать запрос на обновление в движке алхимии mysql через объект orm data_frame.column PY - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь обновить таблицу базы данных mysql. Итак, я разработал объект ORM, который помогает мне уменьшить объем запроса на обновление с помощью UPDATE, WHERE Условия

Прежде всего, я создал переменную ORM, как этоORM Object - это отфильтрованные данные из фрейма данных с использованием условия в другом pd.data_frame CSV. Это мое простое правило, так как легко создавать такие условия:

myOutlook_inBox = pd.read_csv (r'' + mydir + 'test.CSV', usecols= 
['Subject','Body', 'From: (Name)', 'To: (Name)' ], encoding='latin-1')

это простые ORM-данные, извлеченные из * 1007.*

replaced_sbj_value = myOutlook_inBox['Subject']
.str.extract(pat='(L(?:DEL|CAI|SIN).\d{5})').dropna()

, и этот ORM извлекает csv.column из myOutlook_inBox['Subject']

replaced_sbj_value = myOutlook_inBox['Subject']
.str.extract(pat='(L(?:DEL|CAI|SIN).\d{5})').dropna()

myOutlook_inBox["Subject"] = replaced_sbj_value

, и это условие, которое я использую для фильтрации определенных данных

frm_mwfy_to_te = myOutlook_inBox.loc[myOutlook_inBox['From: 
(Name)'].str.contains("mowafy", na=False)
& myOutlook_inBox['To:(Name)'].str.contains("te", 
na=False)].drop_duplicates(keep=False)
frm_mwfy_to_te.Subject

и эта переменная фильтрует строки в базе данных mysql в столбце с именем Subject

filtered_data = all_data
.loc[all_data.site_code.str.contains('|'.join(frm_mwfy_to_te.Subject))]

, и это мой sql-запрос, все, что мне сейчас нужно, - это создание запроса, который обновляет столбец под названием «ожидающие» фильтры.в столбце с именем "site_code" и обновите строки, значение которых содержит filtered_data, чтобы обновить или заменить значения в столбце pending значением TE

update_db_query = engine.execute("UPDATE govtracker SET pending = 'TE'  
WHERE site_code = " + filtered_data)

Я думаю, яПринимая во внимание, что я нахожусь в неправильном сценарии. Любые идеи для решения этой проблемы

Примечание: мне не нужно упоминать старое значение в моем запросе. Я просто хочу обновить значение в той же строке в соответствии с отфильтрованным фреймом данныхпо новому значению, которое я упомянул в запросе

Например, согласно frm_mwfy_to_te.Subject, поскольку Subject - это имя столбца, вызываемое в CSV-файле

Позволяет сказать, что выходные данные этого ORM frm_mwfy_to_te.Subject

 Subject
 LCAIN20804
 LDELE30434
 LSINI20260

Теперь предположим, что это вывод моего ORM, тогда я буду использовать этот ORM для фильтрации и получения строки этих трех значений из базы данных MySQL, так как для обновления каждая строка содержит эти значения, и я хочу обновитьстолбцы с именами Pending и pending status в моем sql

, и это мой запрос к базе данных

CREATE TABLE `mydb`.`govtracker` (
    `id` INT,
    `site_name` VARCHAR(255),
    `region` VARCHAR(255),
    `site_type` VARCHAR(255),
    `site_code` VARCHAR(255),
    `tac_name` VARCHAR(255),
    `dt_readiness` DATE,
    `rfs` VARCHAR(255),
    `rfs_date` DATE,
    `huawei_1st_submission_date` DATE,
    `te_1st_submission_date` DATE,
    `huawei_2nd_submission_date` DATE,
    `te_2nd_submission_date` DATE,
    `huawei_3rd_submission_date` DATE,
    `te_3rd_submission_date` DATE,
    `acceptance_date_opt` DATE,
    `acceptance_date_plan` DATE,
    `signed_sites` VARCHAR(255),
    `as_built_date` DATE,
    `as_built_status` VARCHAR(255),
    `date_dt` DATE,
    `dt_status` VARCHAR(255),
    `shr_status` VARCHAR(255),
    `dt_planned` INT(255),
    `integeration_status` VARCHAR(255),
    `comments_snags` LONGTEXT,
    `cluster_name` LONGTEXT,
    `type_standalone_colocated` VARCHAR(255),
    `installed_type_standalone_colocated` VARCHAR(255),
    `status` VARCHAR(255),
    `pending` VARCHAR(255),
    `pending_status` LONGTEXT,
    `problematic_details` LONGTEXT,
    `ets_tac` INT(255),
    `region_r` VARCHAR(255),
    `sf6_signed_date` DATE,
    `sf6_signed_comment` LONGTEXT,
    `comment_history` LONGTEXT,
    `on_air_owner` VARCHAR(255),
    `pp_owner` VARCHAR(255),
    `report_comment` LONGTEXT,
    `hu_opt_area_owner` VARCHAR(255),
    `planning_owner` VARCHAR(255),
    `po_number` VARCHAR(255),
    `trigger_date` DATE,
    `as_built_status_tr` VARCHAR(255)
) ENGINE = InnoDB;

Еще одно важное замечание: в Excel, когда я использую фильтр в каком-то столбце, он показывает всеЗначения в выбранном столбце, скажем, Pending - это выбранный столбец, который имеет значения Accepted & PAC in progress Planning TE PP DT FM Rollout Integration Opt Team Так что теперьвсе остальные столбцы имеют значение valи так далее. Поэтому мне нужно создать таблицу, например, columns_values и заполнить эту таблицу всеми этими значениями, которые у меня есть, так как эти значения являются статическими значениями. Это легко для решения моего случая

Последнее примечание:Эта база данных соответствует существующему файлу xlsm, но я перемещаю данные из xlsm в mysql, и теперь mysql Является ли моя основная база данных не форматами Excel, но я обновляю базу данных mysql через файл csv, а не в моей базе данных, объект orm frm_mwfy_to_te.Subjectизвлеченные данные из фрейма данных в CSV-файле

Есть идеи?

Я надеюсь, что все достаточно ясно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...