เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เบ›เบฐเบงเบฑเบ”เบชเบฒเบ”

เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป„เบ”เป‰เบ–เบทเบเป‚เบˆเบกเบ•เบตเป‚เบ”เบเป€เบŠเบทเป‰เบญเป„เบงเบฃเบฑเบช ransomware, เป€เบŠเบดเปˆเบ‡, เป‚เบ”เบ "เบญเบธเบ›เบฐเบ•เบดเป€เบซเบ”เป‚เบŠเบเบ”เบต", เบšเบฒเบ‡เบชเปˆเบงเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบŸเบฅเปŒ .ibd (เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ innodb) เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบ•เบฐเบ•เป‰เบญเบ‡, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒ .fpm เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™ (. เป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, .idb เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™:

  • เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเป‚เบ”เบเบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเบฐเบ„เบนเปˆเบกเบท. เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบกเบตเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ” เบเบฒเบโ€‹เป€เบ›เบฑเบ™;
  • เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบšเบฒเบ‡เบชเปˆเบงเบ™. เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เป€เบŠเบดเปˆเบ‡ (เบ•เบฒเบกเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆ) เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบšเปเปˆเบกเบต RAM เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป€เบ•เบฑเบก;
  • เบ”เบต, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŸเบทเป‰เบ™เบŸเบนเป„เบ”เป‰.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบ›เบฑเบ™เบ‚เบญเบ‡เป‚เบ”เบเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบตเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ”เป†เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบเบกเบฑเบ™เปเบกเปˆเบ™ UTF8) เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเบตเบŠเปˆเบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก, เบ•เบปเบงเบขเปˆเบฒเบ‡:

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡ 0 bytes, เปเบฅเบฐเป„เบงเบฃเบฑเบชเบ—เบตเปˆเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบšเบฅเบฑเบญเบ (เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”) เบกเบฑเบเบˆเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบžเบงเบเบกเบฑเบ™เป€เบŠเบฑเปˆเบ™เบเบฑเบ™.
เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบœเบนเป‰เป‚เบˆเบกเบ•เบตเป„เบ”เป‰เบ›เบฐเป„เบงเป‰ 4-byte string (1, 0, 0, 0) เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‡เบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบดเบ”เป€เบŠเบทเป‰เบญ, script เปเบกเปˆเบ™เบžเบฝเบ‡เบžเป:

def opened(path):
    files = os.listdir(path)
    for f in files:
        if os.path.isfile(path + f):
            yield path + f

for full_path in opened("C:somepath"):
    file = open(full_path, "rb")
    last_string = ""
    for line in file:
        last_string = line
        file.close()
    if (last_string[len(last_string) -4:len(last_string)]) != (1, 0, 0, 0):
        print(full_path)

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เปเบฒเบญเบดเบ”. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ„เบนเปˆเบกเบทเบซเบผเบฒเบ, เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเปเบฅเป‰เบง. เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบ”เบต, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบฎเบนเป‰ เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ เปเบฅเบฐ (เปเบ™เปˆเบ™เบญเบ™) เบเปเบฅเบฐเบ™เบตเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบทเป‰เบญเบเป†. เบšเปเปˆเบกเบตเปƒเบœเบˆเบทเปˆเป„เบ”เป‰เบงเปˆเบฒเบ›เบฐเป€เบžเบ”เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบทเบกเบตเบ–เบฑเบ™เปƒเบซเบกเปˆเบ–เบทเบเป€เบžเบตเปˆเบก.

Wilds City, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ–เบทเบเบ‚เบฝเบ™.

เป„เบ›เบฎเบญเบ”เบˆเบธเบ”

เบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบˆเบฒเบ 3 เป€เบ”เบทเบญเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบ›เบฐเบˆเบธเบšเบฑเบ™ (เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก, เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™). เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡:

CREATE TABLE `table_1` (
    `id` INT (11),
    `date` DATETIME ,
    `description` TEXT ,
    `id_point` INT (11),
    `id_user` INT (11),
    `date_start` DATETIME ,
    `date_finish` DATETIME ,
    `photo` INT (1),
    `id_client` INT (11),
    `status` INT (1),
    `lead__time` TIME ,
    `sendstatus` TINYINT (4)
); 

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบชเบฐเบเบฑเบ”:

  • id_point int(11);
  • id_user int(11);
  • date_start DATETIME;
  • date_finish DATETIME.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบง, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ .ibd เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบซเบผเบฒเบ. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบฑเปˆเบ™ int เปเบฅเบฐ datatime, เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒ, เปเบ•เปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเปƒเบ™เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบทเปˆเบ™เป†.

เบšเบฑเบ™เบซเบฒ 1: เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเป€เบžเบ” DATETIME เปเบฅเบฐ TEXT เบกเบตเบกเบนเบ™เบ„เปˆเบฒ NULL, เปเบฅเบฐเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ‚เป‰เบฒเบกเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰, เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเบŸเบทเป‰เบ™เบŸเบนเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เปƒเบ™เบ–เบฑเบ™เปƒเบซเบกเปˆ, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ null, เปเบฅเบฐเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบฒเบ”เบˆเบฐเบชเบนเบ™เป€เบชเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ innodb_flush_log_at_trx_commit = 0, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡.

เบšเบฑเบ™เบซเบฒ 2: เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเปเบ–เบงเบ—เบตเปˆเบ–เบทเบเบฅเบปเบšเบœเปˆเบฒเบ™ DELETE เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ ibd, เปเบ•เปˆเบ”เป‰เบงเบ ALTER TABLE เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบˆเบฐเบšเปเปˆเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบˆเบฒเบเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบˆเบปเบ™เป€เบ–เบดเบ‡เบ—เบตเปˆเบชเบธเบ”. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบฑเบเปƒเบŠเป‰ OPTIMIZE TABLE, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ„เบปเบ‡เบˆเบฐเบšเปเปˆเบžเบปเบšเบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบˆเปˆเบฒเบเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ, เบชเบฐเบšเบฑเบš DBMS เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบญเบทเปˆเบ™เป†. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบชเบฐเบšเบฑเบš windows เบ‚เบญเบ‡ mariadb 10.1.24 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™ mariadb เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ InnoDB, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™ XtraDB, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบš InnoDB mysql.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป„เบŸเบฅเปŒ

เปƒเบ™ python, เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ bytes() เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™ Unicode เปเบ—เบ™เบ•เบปเบงเป€เบฅเบเบ›เบปเบเบเบฐเบ•เบด. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเปƒเบ™เบฎเบนเบšเปเบšเบšเบ™เบตเป‰, เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™ bytes เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบ•เบปเบงเป€เบฅเบเป‚เบ”เบเบเบฒเบ™เปเบ›เบ‡ byte array เป€เบ›เบฑเบ™ array เบ›เบปเบเบเบฐเบ•เบด (list(example_byte_array)). เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เบฑเบ‡เบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ.

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒ ibd เบซเบผเบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปเบšเปˆเบ‡เป„เบŸเบฅเปŒเป‚เบ”เบเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ infimum เป€เบ›เบฑเบ™เบ•เบปเบงเบซเบฒเบ™.

table = table.split("infimum".encode())

เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ: เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบฅเบฐเบซเบงเปˆเบฒเบ‡ infimum เปเบฅเบฐ supremum เบกเบตเบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบˆเปเบฒเบ™เบงเบ™เปเบ–เบงเบขเบนเปˆเปƒเบ™เบ•เบฑเบ™.

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd - เบ•เบฒโ€‹เบ•เบฐโ€‹เบฅเบฒเบ‡โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เปเบ–เบงโ€‹เบ—เบต 1โ€‹

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd - เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบกเบต 2 เปเบ–เบง

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ array เปเบ–เบง[0] เบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเป„เบ”เป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบšเบดเปˆเบ‡เบœเปˆเบฒเบ™เบกเบฑเบ™, เบ‚เป‰เบญเบเบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ”เบดเบšเป„เบ”เป‰. เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบ•เบฑเบ™เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ”เบฑเบ”เบชเบฐเบ™เบตเปเบฅเบฐเบ„เบต.
เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡[1] เปเบฅเบฐเปเบ›เป€เบ›เบฑเบ™ array เบ•เบปเบงเป€เบฅเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฒเบ‡เบฎเบนเบšเปเบšเบš, เบ„เบท:

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เปˆเบฒ int เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡. เป„เบšเบ•เปŒเบ—เบณเบญเบดเบ”เบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเป€เบ›เบฑเบ™เบšเบงเบ เบซเบผเบทเบฅเบปเบš. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ•เบปเบงเป€เบฅเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบšเบงเบ. เบˆเบฒเบ 3 bytes เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเป€เบฅเบเป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰. เบชเบฐเบ„เบฃเบดเบš:

def find_int(val: str):  # example '128, 1, 2, 3'
    val = [int(v) for v in  val.split(", ")]
    result_int = val[1]*256**2 + val[2]*256*1 + val[3]
    return result_int

เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, 128, 0, 0, 1 = 1, เบซเบผเบท 128, 0, 75, 108 = 19308.
เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบกเบตเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบฅเบฐเบกเบฑเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰

เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd

เบกเบตเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบเบงเปˆเบฒเบงเบฑเบ”เบ–เบธ DATETIME เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ 5 เป„เบšเบ•เปŒเปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ 153 (เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป„เบฅเบเบฐเบ›เบฐเบˆเปเบฒเบ›เบต). เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบŠเปˆเบงเบ‡ DATTIME เปเบกเปˆเบ™ '1000-01-01' เป€เบ–เบดเบ‡ 9999-12-31', เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ bytes เบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ‚เปเป‰เบกเบนเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบˆเบฒเบ 2016 เบซเบฒ 2019, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบกเบกเบธเบ” เบงเปˆเบฒ 5 bytes เบžเบฝเบ‡เบžเป.

เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบงเบดเบ™เบฒเบ—เบต, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบ‚เบฝเบ™. เบชเบฐเบ„เบฃเบดเบš:

day_ = lambda x: x % 64 // 2  # {x,x,X,x,x }

def hour_(x1, x2):  # {x,x,X1,X2,x}
    if x1 % 2 == 0:
        return x2 // 16
    elif x1 % 2 == 1:
        return x2 // 16 + 16
    else:
        raise ValueError

min_ = lambda x1, x2: (x1 % 16) * 4 + (x2 // 64)  # {x,x,x,X1,X2}

เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบ›เบตเปเบฅเบฐเป€เบ”เบทเบญเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡ hack เบกเบฑเบ™. เบชเบฐเบ„เบฃเบดเบš:

ym_list = {'2016, 1': '153, 152, 64', '2016, 2': '153, 152, 128', 
           '2016, 3': '153, 152, 192', '2016, 4': '153, 153, 0',
           '2016, 5': '153, 153, 64', '2016, 6': '153, 153, 128', 
           '2016, 7': '153, 153, 192', '2016, 8': '153, 154, 0', 
           '2016, 9': '153, 154, 64', '2016, 10': '153, 154, 128', 
           '2016, 11': '153, 154, 192', '2016, 12': '153, 155, 0',
           '2017, 1': '153, 155, 128', '2017, 2': '153, 155, 192', 
           '2017, 3': '153, 156, 0', '2017, 4': '153, 156, 64',
           '2017, 5': '153, 156, 128', '2017, 6': '153, 156, 192',
           '2017, 7': '153, 157, 0', '2017, 8': '153, 157, 64',
           '2017, 9': '153, 157, 128', '2017, 10': '153, 157, 192', 
           '2017, 11': '153, 158, 0', '2017, 12': '153, 158, 64', 
           '2018, 1': '153, 158, 192', '2018, 2': '153, 159, 0',
           '2018, 3': '153, 159, 64', '2018, 4': '153, 159, 128', 
           '2018, 5': '153, 159, 192', '2018, 6': '153, 160, 0',
           '2018, 7': '153, 160, 64', '2018, 8': '153, 160, 128',
           '2018, 9': '153, 160, 192', '2018, 10': '153, 161, 0', 
           '2018, 11': '153, 161, 64', '2018, 12': '153, 161, 128',
           '2019, 1': '153, 162, 0', '2019, 2': '153, 162, 64', 
           '2019, 3': '153, 162, 128', '2019, 4': '153, 162, 192', 
           '2019, 5': '153, 163, 0', '2019, 6': '153, 163, 64',
           '2019, 7': '153, 163, 128', '2019, 8': '153, 163, 192',
           '2019, 9': '153, 164, 0', '2019, 10': '153, 164, 64', 
           '2019, 11': '153, 164, 128', '2019, 12': '153, 164, 192',
           '2020, 1': '153, 165, 64', '2020, 2': '153, 165, 128',
           '2020, 3': '153, 165, 192','2020, 4': '153, 166, 0', 
           '2020, 5': '153, 166, 64', '2020, 6': '153, 1, 128',
           '2020, 7': '153, 166, 192', '2020, 8': '153, 167, 0', 
           '2020, 9': '153, 167, 64','2020, 10': '153, 167, 128',
           '2020, 11': '153, 167, 192', '2020, 12': '153, 168, 0'}

def year_month(x1, x2):  # {x,X,X,x,x }

    for key, value in ym_list.items():
        key = [int(k) for k in key.replace("'", "").split(", ")]
        value = [int(v) for v in value.split(", ")]
        if x1 == value[1] and x2 // 64 == value[2] // 64:
            return key
    return 0, 0

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบ™เปˆโ€‹เปƒเบˆเบงเปˆโ€‹เบฒโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒ n เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹, เบ„เบงเบฒเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบœเบดเบ”โ€‹เบ™เบตเป‰โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบ”เป‰โ€‹.
เบ•เปเปˆเป„เบ›, เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบงเบฑเบ”เบ–เบธเบงเบฑเบ™เบ—เบตเบˆเบฒเบเบชเบฐเบ•เบฃเบดเบ‡. เบชเบฐเบ„เบฃเบดเบš:

def find_data_time(val:str):
    val = [int(v) for v in val.split(", ")]
    day = day_(val[2])
    hour = hour_(val[2], val[3])
    minutes = min_(val[3], val[4])
    year, month = year_month(val[1], val[2])
    return datetime(year, month, day, hour, minutes)

เบˆเบฑเบ”เบเบฒเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เบžเบปเบšเบ„เปˆเบฒเบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เป€เบฅเบทเป‰เบญเบเป†เบˆเบฒเบ int, int, datetime, datetime เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ XtraDB เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ byte-by-byte เบ‚เบญเบ‡เป„เบŸเบฅเปŒ ibd, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบฅเปเบฒเบ”เบฑเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบŠเป‰เปเบฒเบชเบญเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเปเบ–เบง.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบด, เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™:

fined = re.findall(r'128, d*, d*, d*, 128, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*, 153, 1[6,5,4,3]d, d*, d*, d*', int_array)

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเป€เบกเบทเปˆเบญเบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒ NULL เปƒเบ™เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ‚เป‰เบญเบเบ™เบตเป‰เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ loop เป€เบ›เบฑเบ™. เบชเบฐเบ„เบฃเบดเบš:

result = []
for val in fined:
    pre_result = []
    bd_int  = re.findall(r"128, d*, d*, d*", val)
    bd_date= re.findall(r"(153, 1[6,5,4,3]d, d*, d*, d*)", val)
    for it in bd_int:
        pre_result.append(find_int(bd_int[it]))
    for bd in bd_date:
        pre_result.append(find_data_time(bd))
    result.append(pre_result)

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ array เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. ###PS.###
เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™, เปเบ•เปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบเบฐเบ•เบธเป‰เบ™เป€เบ•เบทเบญเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ„เบดเบ”โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบชเบถเบโ€‹เบชเบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เปเบซเบผเปˆเบ‡โ€‹เบ•เบปเบงโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบญเบ‡โ€‹ mariadb, เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเป€เบงเบฅเบฒเบˆเปเบฒเบเบฑเบ”, เบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป„เบงเบ—เบตเปˆเบชเบธเบ”.

เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป„เบŸเบฅเปŒ, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เปเบฅเบฐเบŸเบทเป‰เบ™เบŸเบนเบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบ เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเปœเป‰เบญเบเบฅเบปเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™