import csv from io import StringIO import pymysql from pymysql.cursors import DictCursor s = """ 影厅别名,影厅id,影片别名,本地影片id,语言,放映日期,开始时间,结束时间,片长,场间 2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-14,13:00,14:46,106,0 2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-14,15:00,16:46,106,14 2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-14,17:00,18:46,106,14 2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-14,19:00,20:46,106,14 2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-14,21:00,22:46,106,14 2楼1号厅(部分按摩椅),2,功夫女足,4292,国语,2026-07-14,11:00,12:46,106,0 2楼1号厅(部分按摩椅),2,八仙!,4296,国语,2026-07-14,13:00,15:24,144,14 2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-14,15:40,17:57,137,16 2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-14,18:10,20:27,137,13 2楼1号厅(部分按摩椅),2,八仙!,4296,国语,2026-07-14,20:40,23:04,144,13 2楼2号速度与激情厅(部分按摩椅),3,四渡,4275,国语,2026-07-14,10:20,12:22,122,0 2楼2号速度与激情厅(部分按摩椅),3,四渡,4275,国语,2026-07-14,12:35,14:37,122,13 2楼2号速度与激情厅(部分按摩椅),3,四渡,4275,国语,2026-07-14,14:50,16:52,122,13 2楼2号速度与激情厅(部分按摩椅),3,四渡,4275,国语,2026-07-14,17:05,19:07,122,13 2楼2号速度与激情厅(部分按摩椅),3,四渡,4275,国语,2026-07-14,19:20,21:22,122,13 2楼3号厅(部分按摩椅),4,功夫女足,4292,国语,2026-07-14,10:30,12:16,106,0 2楼3号厅(部分按摩椅),4,小黄人与大怪兽(国语),4289,国语,2026-07-14,12:30,14:00,90,14 2楼3号厅(部分按摩椅),4,小黄人与大怪兽(国语),4289,国语,2026-07-14,14:15,15:45,90,15 2楼3号厅(部分按摩椅),4,后室,4279,原版,2026-07-14,16:00,17:51,111,15 2楼3号厅(部分按摩椅),4,功夫女足,4292,国语,2026-07-14,18:05,19:51,106,14 2楼3号厅(部分按摩椅),4,八仙!,4296,国语,2026-07-14,20:05,22:29,144,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,11:30,13:16,106,0 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,13:30,15:16,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,15:30,17:16,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,17:30,19:16,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,19:30,21:16,106,14 2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-14,21:30,23:16,106,14 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,11:05,12:51,106,0 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,13:05,14:51,106,14 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,15:05,16:51,106,14 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,17:05,18:51,106,14 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,19:05,20:51,106,14 3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-14,21:05,22:51,106,14 3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-14,12:00,13:46,106,0 3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-14,14:00,15:46,106,14 3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-14,16:00,17:46,106,14 3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-14,18:00,19:46,106,14 3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-14,20:00,21:46,106,14 3楼7号厅,8,功夫女足,4292,国语,2026-07-14,12:40,14:26,106,0 3楼7号厅,8,八仙!,4296,国语,2026-07-14,14:40,17:04,144,14 3楼7号厅,8,小黄人与大怪兽(国语),4289,国语,2026-07-14,17:15,18:45,90,11 3楼7号厅,8,三国第一部:争洛阳,4281,国语,2026-07-14,19:00,21:17,137,15 3楼7号厅,8,后室,4279,原版,2026-07-14,21:30,23:21,111,13 2楼 三江VIP厅,9,功夫女足,4292,国语,2026-07-14,14:05,15:51,106,0 2楼 三江VIP厅,9,那山那水,4264,国语,2026-07-14,16:05,17:31,86,14 2楼 三江VIP厅,9,八仙!,4296,国语,2026-07-14,17:45,20:09,144,14 2楼 三江VIP厅,9,特立独行,4280,国语,2026-07-14,20:20,22:23,123,11 """ # 将csv转化成字典 def csv_to_obj(csv_data): f = StringIO(csv_data) print(csv_data, f) reader = csv.DictReader(f) return list(reader) def get_real_data(cinema_code: str, show_date: str): db_config = { 'host': '172.16.1.63', 'port': 3306, 'user': 'root', 'password': 'Cine123456', 'database': 'dingxin_toolbox', } db_conn = pymysql.connect(**db_config) db_cursor = db_conn.cursor(cursor=DictCursor) db_cursor.execute( "SELECT * FROM dingxin_toolbox.ai_show_result WHERE zz_code=%s AND show_date=%s AND is_ai_show=%s", (cinema_code, show_date, 0)) real_data = db_cursor.fetchone() return real_data['show'] def count_data(data): count = len(data) - 1 movie_dict = {} for movie in data[1:]: movie_name = movie[None][2] if movie_name in movie_dict.keys(): movie_dict[movie_name] += 1 else: movie_dict[movie_name] = 1 movie_dict = dict(sorted(movie_dict.items(), key=lambda item: item[1], reverse=True)) print(f"共{count}场") for key, value in movie_dict.items(): print(f"《{key}》: {value}场 占比{round(value / count * 100, 2)}%") def _get_hall_count(show: list) -> dict: hall_show_count = dict() for show in show[1:]: hall = show[None][1] if hall in hall_show_count.keys(): hall_show_count[show[None][1]] += 1 else: hall_show_count[show[None][1]] = 1 return hall_show_count def get_hall_show_count(ai: list, real: list) -> dict: ai_hall_show_count = _get_hall_count(ai) real_hall_show_count = _get_hall_count(real) more = ai_hall_show_count if len(ai_hall_show_count) >= len(real_hall_show_count) else real_hall_show_count hall_show_count = dict() for key in more.keys(): hall_show_count[key] = ai_hall_show_count[key] if ai_hall_show_count.get(key, 0) >= real_hall_show_count.get( key, 0) else real_hall_show_count[key] return hall_show_count def show_data(zz_code: str, show_date: str): real_obj = csv_to_obj(get_real_data(zz_code, show_date)) ai_obj = csv_to_obj(s) print('ai_obj', ai_obj) print('real_obj', real_obj) hall_show_count = get_hall_show_count(ai_obj, real_obj) print(hall_show_count) if __name__ == '__main__': count_data(csv_to_obj(s)) # show_data('33040301', '2026-07-13')