通过course_key获取课程

本文介绍了2019年独角兽企业招聘Python工程师的标准,并提供了与Python相关的课程获取代码示例。
video_module
           from xmodule.modulestore.django import modulestore
   store = modulestore()
            course = store.get_course(self.course_id, depth=3)

lms:
   from courseware.courses import get_course_by_id
   course = get_course_by_id(self.course_id)


转载于:https://my.oschina.net/u/2002748/blog/414802

已知:create table course (course_id varchar(8), title varchar(50), dept_name varchar(20), credits numeric(2,0) check (credits > 0), primary key (course_id), foreign key (dept_name) references department (dept_name) on delete set null ); create table instructor (ID varchar(5), name varchar(20) not null, dept_name varchar(20), salary numeric(8,2) check (salary > 29000), primary key (ID), foreign key (dept_name) references department (dept_name) on delete set null );create table teaches (ID varchar(5), course_id varchar(8), sec_id varchar(8), semester varchar(6), year numeric(4,0), primary key (ID, course_id, sec_id, semester, year), foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year) on delete cascade, foreign key (ID) references instructor (ID) on delete cascade ); create table student (ID varchar(5), name varchar(20) not null, dept_name varchar(20), tot_cred numeric(3,0) check (tot_cred >= 0), primary key (ID), foreign key (dept_name) references department (dept_name) on delete set null ); create table takes (ID varchar(5), course_id varchar(8), sec_id varchar(8), semester varchar(6), year numeric(4,0), grade varchar(2), primary key (ID, course_id, sec_id, semester, year), foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year) on delete cascade, foreign key (ID) references student (ID) on delete cascade );求建立 2010 年以来各门课程不及格学生的视图,按课程列出课程号,课程名,课程段,任课老师,学期,学年,学生学号,学生姓名及其成绩。
05-29
def del_row(value, tab_name='tbCourse', col_name='Cno'): """删除指定行数据""" connection = pymysql.connect(host=db_config.HOST, user=db_config.USER, port=db_config.DB_PORT, password=db_config.PWD, database=db_config.DB_NAME, cursorclass=pymysql.cursors.Cursor) with connection: try: with connection.cursor() as cursor: sql = f"DELETE FROM {tab_name} WHERE {col_name}=%s;" affected_rows = cursor.execute(sql, (value,)) connection.commit() except Exception as e: print(f"删除错误: {e}") return 0 return affected_rows根据上述函数,修改一下代码使之可以实现删除数据的功能import FreeSimpleGUI as sg #需要切换为MySQL数据库,请将fetch_data_mssql更改为:fetch_data_mysql from fetch_data_mysql import getData, del_row, insert_row,insert_workrow,getData_aim from db_config import get_header def open_homework_delet(): """打开删除作业数据的窗口""" sublayout_homedelete = [ [sg.T('请输入要删除的学号:', justification='right'), sg.Input('', size=(50, None), key='-sub_Sno-')], [sg.Button('查询', key='-btn_homework_search-'), sg.Button('确认删除', key='-btn_homework_delet', disabled=True)] ] subwin_homeworkdelete = sg.Window('数据删除', sublayout_homedelete, font=('微软雅黑', 13), modal=True) result = None while True: ev2, vals2 = subwin_homeworkdelete.read() if ev2 in (sg.WIN_CLOSED, 'Exit'): break elif ev2 == '-btn_homework_search-': student_id = vals2['-sub_Sno-'].strip() if not student_id: sg.popup("请输入学号") continue # 查询该学号的作业记录 result = getData_aim(student_id, tab_name='homework') if result: # 显示查询结果 headers = get_header(tab_name='homework') table_layout = [ [sg.Table( values=result, headings=headers, auto_size_columns=True, display_row_numbers=True, justification='left', num_rows=min(5, len(result)), key='-RESULT_TABLE-' )], [sg.Text(f"找到 {len(result)} 条记录,确认删除吗?")] ] # 启用删除按钮 subwin_homeworkdelete['-btn_homework_delet'].update(disabled=False) # 添加结果表格 if hasattr(subwin_homeworkdelete, 'result_frame'): subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=True) subwin_homeworkdelete['-RESULT_TABLE-'].update(result) else: frame = sg.Frame('查询结果', table_layout, key='-RESULT_FRAME-') subwin_homeworkdelete.extend_layout(sublayout_homedelete, [[frame]]) else: sg.popup("未找到相关记录") if hasattr(subwin_homeworkdelete, 'result_frame'): subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=False) subwin_homeworkdelete['-btn_delete-'].update(disabled=True) elif ev2 == '-btn_homework_delet' and result: # 确认删除 if sg.popup_yes_no('确定要删除这些记录吗?此操作不可恢复!') == 'Yes': # 执行删除操作 affected_rows = del_row(vals2['-sub_Sno-'], tab_name='homework', col_name='Sno') if affected_rows > 0: sg.popup(f"成功删除 {affected_rows} 条记录") result = None subwin_homeworkdelete['-RESULT_FRAME-'].update(visible=False) subwin_homeworkdelete['-btn_delete-'].update(disabled=True) else: sg.popup("删除失败,请重试") subwin_homeworkdelete.close()if __name__ == '__main__': sg.theme('DefaultNoMoreNagging') data_ducsum = getData(tab_name='ducsum') header_ducsum = get_header(tab_name='ducsum') data_homework = getData(tab_name='homework') header_homework = get_header(tab_name='homework') data_courses = getData(tab_name='tbcourse') header_courses = get_header(tab_name='course') data_students = getData(tab_name='tbStuinfo') header_students = get_header(tab_name='student') header_sc = get_header(tab_name='sc') homework_layout = [ [sg.InputText(),sg.Button(button_text='搜索',key='-btn_homework_search'), sg.Button(button_text='添加',key='-btn_add_homework'), sg.Button(button_text='删除',key='-btn_homework_delet'), sg.Button(button_text='修改') ], [sg.Table(values=data_homework, headings=header_homework, size=(550,400), max_col_width=100, auto_size_columns=False, display_row_numbers=False, justification='left', num_rows=15, alternating_row_color='lightyellow', key='-TABLE_course-', selected_row_colors='red on yellow', enable_events=True, expand_x=True, expand_y=True, enable_click_events=True, # Comment out to not enable header and other clicks tooltip='This is a course table') ], [sg.Button(button_text='上一页', key='-btn_refresh_course-'), sg.Button(button_text='下一页', key='-btn_del_course-') ] ]window = sg.Window('课后作业评分系统', layout, default_element_size=(10, 1),size=(740,580), font=('微软雅黑', 14)) cur_cno=None #当前的选择的课程号 cur_course_row_number=None #当前课程表中被选择的行号,行号从0开始,-1为标题行 subwin_addCourse_active = False subwin_addCourse = None while True: event, values = window.read() # sg.popup_non_blocking(event, values) # print(event) # print(values) if event == sg.WIN_CLOSED: # always, always give a way out! break if event=='-btn_del_course-': # 删除选择的课程号 aff_rows = del_row(cno=cur_cno, tab_name='tbCourse') print('影响的行数:', aff_rows) if(aff_rows>0): data_courses = list(data_courses) data_courses.pop(cur_course_row_number) #从数据表格中移除选择的行数据 window['-TABLE_course-'].update(data_courses) cur_course_row_number = None cur_cno = None elif event=='-btn_add_course-': # 添加课程 # 先弹窗,获取信息 add_affected_rows = open_addCourseWindow() if add_affected_rows>0: data_courses = refreshData(table_key='-TABLE_course-', tab_name='tbcourse') elif event=='-btn_refresh_course-': # 刷新课程表的显示 data_courses = refreshData(table_key='-TABLE_course-', tab_name='tbcourse') elif event=='-btn_add_homework': add_affected_row = open_addHomeworkWindow() if add_affected_row>0: data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse') elif event=='-btn_hundred_system': add_affected_row = open_hundredsystem() if add_affected_row>0: data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse') elif event=='-btn_rank_system': add_affected_row = open_rank_system() if add_affected_row>0: data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse') elif event=='-btn_homework_search': add_affected_row = open_homework_search() if add_affected_row>0: data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse') elif event=='-btn_homework_delet': add_affected_row = open_homework_delet() if add_affected_row>0: data_courses = refreshData(table_key='-TABLE_course-',tab_name='tbcourse') if isinstance(event, tuple): # TABLE CLICKED Event has value in format ('-TABLE-', '+CLICKED+', (row,col)) if event[0] == '-TABLE_course-': cur_course_row_number = event[2][0] col_number = event[2][1] if cur_course_row_number is not None: # 获取鼠标点击行的数据 cur_row_value = data_courses[cur_course_row_number] # 获取点击行的Cno cur_cno = cur_row_value[0] print('当前选择的课程号:', cur_cno) window.close()
06-20
```python import requests import pymysql import json # 1. 从API获取数据 def fetch_data(): url = "http://article.xishanyigu.com/index/index/test" response = requests.get(url) if response.status_code == 200: return response.json() else: raise Exception(f"API请求失败,状态码: {response.status_code}") # 2. 数据库连接和操作 def process_data(data): # 连接到MySQL数据库(请根据实际修改连接参数) connection = pymysql.connect( host='localhost', user='root', password='yourpassword', database='test', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) try: with connection.cursor() as cursor: # 创建符合第三范式的表结构 cursor.execute(""" CREATE TABLE IF NOT EXISTS students ( student_id VARCHAR(20) PRIMARY KEY, name VARCHAR(50) NOT NULL, gender ENUM('男','女') NOT NULL, age INT NOT NULL ) """) cursor.execute(""" CREATE TABLE IF NOT EXISTS courses ( course_name VARCHAR(50) PRIMARY KEY, credit INT NOT NULL ) """) cursor.execute(""" CREATE TABLE IF NOT EXISTS grades ( student_id VARCHAR(20) NOT NULL, course_name VARCHAR(50) NOT NULL, score INT NOT NULL, PRIMARY KEY (student_id, course_name), FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (course_name) REFERENCES courses(course_name) ) """) # 准备去重数据 students = {} courses = {} grades = [] for item in data: # 处理学生数据 student_id = item[0] if student_id not in students: students[student_id] = { 'name': item[1], 'gender': item[2], 'age': item[3] } # 处理课程数据 course_name = item[4] if course_name not in courses: courses[course_name] = item[6] # 处理成绩数据 grades.append({ 'student_id': student_id, 'course_name': course_name, 'score': item[5] }) # 插入学生数据 for student_id, info in students.items(): cursor.execute( "INSERT IGNORE INTO students (student_id, name, gender, age) VALUES (%s, %s, %s, %s)", (student_id, info['name'], info['gender'], info['age']) ) # 插入课程数据 for course_name, credit in courses.items(): cursor.execute( "INSERT IGNORE INTO courses (course_name, credit) VALUES (%s, %s)", (course_name, credit) ) # 插入成绩数据 for grade in grades: cursor.execute( "INSERT IGNORE INTO grades (student_id, course_name, score) VALUES (%s, %s, %s)", (grade['student_id'], grade['course_name'], grade['score']) ) # 计算各科平均成绩 cursor.execute(""" SELECT course_name, AVG(score) AS average_score FROM grades WHERE course_name IN ('语文', '数学', '英语') GROUP BY course_name """) results = cursor.fetchall() print("\n各科平均成绩:") for row in results: print(f"{row['course_name']}: {row['average_score']:.2f}") # 提交事务 connection.commit() finally: connection.close() # 主程序 if __name__ == "__main__": # 获取数据 api_data = fetch_data() # 处理数据并存储到数据库 process_data(api_data) print("数据处理完成!") ```依据上题所得数据库,编写相应Web数据接口(增删改查)。 要求: ⚫ 接口输出格式为JSON; ⚫ 数据创建接口能够接收学号、学生名、性别、年龄创建学生 信息,并返回结果状态(是否成功); ⚫ 数据删除接口根据唯一标识对指定学生信息进行删除,并返 回结果状态(是否成功); ⚫ 数据修改接口根据唯一标识对指定学生进行学生名修改,并 返回结果状态(是否成功); ⚫ 查询接口信息中应包括数据查询状态(是否成功)、查询结 果描述、相关数据(学号、学生名、性别、年龄、课程名、 成绩、学分)。
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值