from lib.all import * phones = [ "DBFD77FB0E886294EAFC2C63D0D0C9C2B3F344781A60696E30711B71611D12C9", "378C7645452366291152024D3AF0A9B5F68976BE118FFCBDAADBC4A04B18BA3F", "7877433F9E8950AF6A6DA4DB507516FC883FF552C8C921C4F75E14AB323C5682", "7E17A943331B71B0E7F5151CD4758A083076CB52ABB76CC0FBA6AE0D500CCA68", "134FCBC7983226ACF3CADD6818DD5101A7BC5996BA1776246CA85A45FEEA6E3B", "F69BB7F2FF248A180BB3AD4A0FC49245914892A7E9E8336AF4F28899631457DA", "021DCCC333B9029EAD264CDFF9902797EDF1855D9156F7FDBF4A39877E7572E3", "D291D1D2E696F2DDE6CFD6D091824325A239C0079B91AAADDF32CB4F3E31D671", "BCBC12FB663DC0D3148678DE278C4C3E8500DBB8E4270262441842FEC675DBF4", "F6EE4A9748FA1CA0F3BCDD2E4D5BC401DB05D599C4E48435EE4974994AE48811", "A022FE59FA8C185DF2B327D6D6237F790E6A2630B3D2B107529AED9F17B833E5", "3B29320EFA5C39C53D1F78E497791B6E08642F9D0922E8BB7B993D56E80CC0FA", "A247D6A797D7321BE3A80846F56190DA801C97E5A6B24245DBF54DFCE720F330", "F11CBD0D4322EA07E36ACB7002AFCCD609ABE63AB564B63E9606CE174CA80234", "55D54B1FB0ABD5CF0BAF871C60CFB475CDBB8C296124376614CE0F5C72ED73A1", "74F19BC1E6373593720FFA0ADD54ECE056F9B60856CC67AA27D8EFA56F69EB68", "9587D05C0F4697AFCBF53B9838858B1B923B4E90FBF2ED6DB997BABF683FFF9D", "96AE2401AAD812CEECA0A039CC3D2B4B16549B4E6067A24422A9736DEF422DD1", "D8E8498E4FA0196A806B9544742864958348AB4D66D462A7A84F9412FD583ACC", "AAE9B0C18C7041B5EFF4E6761E09BD4A1214BCCAF681A78D6C9B45241E5131EF", "B5EE9827A9D1141FA214CAA19552144D920B835DB709CBACA0DA47DB740C5FC3", "A9B7D07BB9DA577235AC4D792A7C37BC1DE1975B6BBC7E64201D507469A1F074", "7049B5054D9BA167DAA151829C6010E2D2DC6371D63ADAAB0CCBD4069853B1CE", "F0C53C311E231E1A3EC7D80F437D5817E2CD589352CF621B08327CF3EE4060DF", "8514B338808B52F5EF87F05C708B8BA64469F5EAC3AC36995EFD9224F4749FB7", "E4F571925A452C45391F242EA2B6A7E83E178EF3D0D6DD26D45D582B377CEACD", "1A423E296437BD31E27AEF441B3F2777AEE68564961221D77F51A27FA8BA7D43", "BDF3E64317033A77698762CFF81B90D2EB5668C917D5A06EC30A8B6AE75C1BC4", "7DB782EA76BEF7520E62F2D2B8D735CA29EA3C56CA765E90DA87050E1B5799B7", "762EDF10879ED6B8D2A6756F1A634245CCA2B986817ACF4EA0A5DDF783674958", "22160A30420A4CEC6FC4D0EE3BBBA3A325FE0E846B961B9C16A7CDCE0309B002", "368F7B38BD4CDEA48FD66C860B74D571DF85CA6C68DF147AB962691047C86C27", "78A5C06FD55620254C00E4EEE73DA9C8221C6384280988B7B4949745B272A23C", "CB0D9AC93FD0809E70FB3F97A7BF1BB9132CE4D1DCD413394605958F60F8272F", "AC94D563EC198C8AD3F3D62D37D80BA5B1B6020EA1C6F7FB96AD6934D7831F2C", "E3BC4B070505C1AF360ACA2894716E0DF198C39DCEE233B54C56B3E3470606CE", "510D152843F931AF96874F2B1D0960C3512F1C425BF204C321237273DC7F621F", "457FD60D604E1DFCD091A5BD93580920824334B65F09EBED94269482CF3BE85D", "8AFCB1C36DAD43063AAB002A17CBE488B3DB5679847555DE2022143007C88A8F", "EEDAC943B5610BA11EA11BD40CB4750592BBC554C83D542E98509531BDE91938", "F8FCE5E38B6C2445114263F4682A532D70FBB52709D718734574A45383FBC637", "643E0E7D84AAA8BFCAB5EADF390E4538FE05ACBD7F33550E112CEED2D5A5088A", "0CA6FF01E0A3B78A7FB42CD115E6597A1854AE24EDA2DCCA51D246B81A2D2D9F", "6823A5A7DF573E499B1C6B28CAE992932B7D05C88E0B1539D7744B67A0C1A76D", "564466DD8030CD1E7F7F56FE58E378BF1D0A4A8E93F368B325FF0068013D0ED1", "0B6ED9361F759568F0D9833C2E1BD107F1F1DD78FBF98871913CB4F0DDCFCC12", "28F54D33B6EF293BB3F9E4D29348E02D1BE73F0F9FC480E4DF4CA32153291286", "83B0E9BF48FE6DAE02A85C8F3DFD8AE3BB22C858C0A6C7903B6BBC9A3E74C1FF", "7D4788730FA7DBA73EFF6AE8AA177F145A952F8A748DEC6E7FBDAE2615B2EB79", "620F442A801804F111B8DD1F8E5DBFD27327C26101DFFF2F5F5A9BBD071FD5D8", "875D2E7AF17A412BFCBDC90E9CBA9C9605EA7B901190241556E387F2EFEA9434", "A32E1012FB7CCC22EDCB4FE9497804E917BA8C3C961EE94E5A773CC6C21A1B98", "41B1B1A9FE0BBA59AFBFCD083B71192092E07CC529A40E08C09C033077FB984E", "4099458CA4732803CB5CD57FFDFBC06559866D4919242FFEF35747C186B8EC74", "0946337016BB17F6F5DC38F24DACD15A728F0ED1A7C144F310495167F0455C12", "9B22B0E352BC799ABDF0E51313C93BD7A616E76FB60750C7AE97B2CD03D0FAFE", "12ED5C37D18144C246DB3912FC78DF93981A2EA6962BD8B4120FD4A85CE9FFC3", "399019F970604AA83190C14726B5221D881193DC3FD7F19A9011DBE5A81FA10F", "DAE530B1F661A161153A97E42AFE8C50F3ACA8277981CB494577FACC303CEBFF", "DE6BF5039865F4C3A55DD79B7529D368CF1830833E6156307F6263DDB869380E", "2E2782AFD24C6F06D73E4EB292EACF82F288E77A195CFB5D036B782EC6874F82", "CC29D3E45A16AE94C04D338838725AFEA609DB9BFE153BB8D187827A1578A193", "8B5448A568B5CDF163478D2A9DBB1B55F079638C8A8248C56251E24B7DCF3B91", "1CFFDCC0197C52DF34EA37474EF609EF5BA4CDADD8F0B8DD3531490633BDB7A0", "367C67D5C81018157211494D573ADBBD445AC4F0FE72F7697555E72860AB121C", "6E6142B7DA014317E2866F3B88E53E141173BBC66ADE50D58068ED754193A18D", "55649D9D97626A07E8B7FDFE932357E288EBDFF622F5C4D62B408A7243D87336", "941DAA645389CF337D1153AAB3AD691A4E7AAD2C9A520CC5185DB5DAEFEC0582", "087FF1524036440EF31FB55CF760B65B5127449F8BBF5123BC76A6008617EB2B", "6B6ADCD4C9EBE8898DFF3643CA602B2FABB750D0BBF6A3D88047D2B7A674E3A5", "11A6B053B086B59394CB1FD35C1501059358F8051592EF5572065873B4CA2539", ] class S: def __init__(self): self.col_account = MongoDB( host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659", port=3717, db="account", collection="account" ) self.col_login = MongoDB( host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659", port=3717, db="login", collection="login" ) print(self.col_account) self.mysql_db_vas = Mysql( "rm-bp11t1616a1kjvmx5.mysql.rds.aliyuncs.com", 3306, "vas", "root", "Wishpal2024" ) def __del__(self): self.col_account.close() self.col_login.close() self.mysql_db_vas.close() def get_orders(self, mid): sql = '''select id,order_status from vas_order where mid={}'''.format(mid) rows = self.mysql_db_vas.query(sql) return rows # def get_login(self, mid): # q = { # "mid": mid # } # self.col_account # def proc_one(self, phone_hash): q = { "phone_hash": phone_hash } prj = { "_id": 1, "ct": 1, } docs = self.col_account.find(query=q, projection=prj) sort_dict_list(docs, 'ct') first_mid = safe_get_int(docs[0], "_id") has_order_mids = list() to_delete_mids = list() for doc in docs: mid = safe_get_int(doc, "_id") if mid == first_mid: continue orders = self.get_orders(mid) if len(orders) > 0: has_order_mids.append(mid) else: to_delete_mids.append(mid) # print(phone, has_order_mids) # return del_acnt_cnt = 0 del_login_cnt = 0 for delmid in to_delete_mids: ret1 = self.col_account.delete_one({"_id": delmid}) del_acnt_cnt += ret1.deleted_count ret2 = self.col_login.delete_one({"mid": delmid}) del_login_cnt += ret2.deleted_count print(phone, len(docs), len(to_delete_mids), first_mid, del_acnt_cnt, del_login_cnt) s = S() for phone in phones: s.proc_one(phone)