From 406e88f74a01bfc4e655cf204ba805f12811cbf5 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 19 Feb 2018 07:57:03 +0300 Subject: [PATCH] Exploration de la db avec sqlachemy --- Notes/sqlalchemy.ipynb | 861 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 861 insertions(+) create mode 100644 Notes/sqlalchemy.ipynb diff --git a/Notes/sqlalchemy.ipynb b/Notes/sqlalchemy.ipynb new file mode 100644 index 0000000..2ae61c1 --- /dev/null +++ b/Notes/sqlalchemy.ipynb @@ -0,0 +1,861 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Récupération de l'ORM!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sqlalchemy import create_engine\n", + "from sqlalchemy.ext.declarative import declarative_base\n", + "from sqlalchemy.orm import sessionmaker\n", + "from sqlalchemy import Table, Column, Integer, ForeignKey\n", + "from sqlalchemy.orm import relationship\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dbPath = 'recopytex.db'\n", + "engine = create_engine('sqlite:///%s' % dbPath, echo=True)\n", + "Base = declarative_base(engine)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:25,524 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1\n", + "2018-02-19 07:54:25,525 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,527 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1\n", + "2018-02-19 07:54:25,528 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,530 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"student\")\n", + "2018-02-19 07:54:25,532 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,536 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'student' AND type = 'table'\n", + "2018-02-19 07:54:25,537 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,540 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"student\")\n", + "2018-02-19 07:54:25,541 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,543 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'student' AND type = 'table'\n", + "2018-02-19 07:54:25,544 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,553 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"tribe\")\n", + "2018-02-19 07:54:25,554 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,557 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'tribe' AND type = 'table'\n", + "2018-02-19 07:54:25,558 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,560 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"tribe\")\n", + "2018-02-19 07:54:25,566 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,569 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'tribe' AND type = 'table'\n", + "2018-02-19 07:54:25,570 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,571 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"tribe\")\n", + "2018-02-19 07:54:25,573 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,574 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"tribe\")\n", + "2018-02-19 07:54:25,575 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,577 INFO sqlalchemy.engine.base.Engine PRAGMA index_info(\"sqlite_autoindex_tribe_1\")\n", + "2018-02-19 07:54:25,578 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,579 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'tribe' AND type = 'table'\n", + "2018-02-19 07:54:25,580 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,593 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"student\")\n", + "2018-02-19 07:54:25,594 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,595 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"student\")\n", + "2018-02-19 07:54:25,596 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,598 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'student' AND type = 'table'\n", + "2018-02-19 07:54:25,599 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,613 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"eval\")\n", + "2018-02-19 07:54:25,614 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,617 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'eval' AND type = 'table'\n", + "2018-02-19 07:54:25,618 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,620 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"eval\")\n", + "2018-02-19 07:54:25,621 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,623 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'eval' AND type = 'table'\n", + "2018-02-19 07:54:25,624 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,626 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"eval\")\n", + "2018-02-19 07:54:25,627 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,629 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"eval\")\n", + "2018-02-19 07:54:25,630 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,631 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'eval' AND type = 'table'\n", + "2018-02-19 07:54:25,632 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,640 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"exercise\")\n", + "2018-02-19 07:54:25,642 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,644 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'exercise' AND type = 'table'\n", + "2018-02-19 07:54:25,646 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,648 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"exercise\")\n", + "2018-02-19 07:54:25,649 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,651 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'exercise' AND type = 'table'\n", + "2018-02-19 07:54:25,652 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,655 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"exercise\")\n", + "2018-02-19 07:54:25,661 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,668 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"exercise\")\n", + "2018-02-19 07:54:25,669 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,671 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'exercise' AND type = 'table'\n", + "2018-02-19 07:54:25,671 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,678 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"question\")\n", + "2018-02-19 07:54:25,679 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,682 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'question' AND type = 'table'\n", + "2018-02-19 07:54:25,683 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,684 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"question\")\n", + "2018-02-19 07:54:25,685 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,686 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'question' AND type = 'table'\n", + "2018-02-19 07:54:25,688 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,691 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"question\")\n", + "2018-02-19 07:54:25,692 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,693 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"question\")\n", + "2018-02-19 07:54:25,694 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,698 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'question' AND type = 'table'\n", + "2018-02-19 07:54:25,699 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,704 INFO sqlalchemy.engine.base.Engine PRAGMA table_info(\"score\")\n", + "2018-02-19 07:54:25,705 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,706 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'score' AND type = 'table'\n", + "2018-02-19 07:54:25,707 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,709 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list(\"score\")\n", + "2018-02-19 07:54:25,710 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,711 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'score' AND type = 'table'\n", + "2018-02-19 07:54:25,712 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,714 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"score\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:25,715 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,716 INFO sqlalchemy.engine.base.Engine PRAGMA index_list(\"score\")\n", + "2018-02-19 07:54:25,717 INFO sqlalchemy.engine.base.Engine ()\n", + "2018-02-19 07:54:25,718 INFO sqlalchemy.engine.base.Engine SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE name = 'score' AND type = 'table'\n", + "2018-02-19 07:54:25,719 INFO sqlalchemy.engine.base.Engine ()\n" + ] + } + ], + "source": [ + "class Student(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'student'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " scores = relationship(\"Score\", backref=\"student\")\n", + " \n", + " @property\n", + " def fullname(self):\n", + " if self.surname:\n", + " return ' '.join([self.name.upper(), self.surname.capitalize()])\n", + "\n", + " return self.name.upper()\n", + " \n", + " def __repr__(self):\n", + " return f\"\"\n", + " \n", + " def to_df(self, columns = [\"id\", \"name\", \"surname\", \"fullname\", \"tribe_id\"]):\n", + " cara_dict = {c:self.__getattribute__(c) for c in columns}\n", + " return pd.DataFrame.from_dict([cara_dict])\n", + " \n", + " def score_df(self, with_self=True):\n", + " scs_df = pd.concat([sc.to_df() for sc in seld.scores])\n", + " if with_self:\n", + " self_df = self.to_df()\n", + " return pd.merge(scs_df, self_df, left_on=\"student_id\", right_on=\"id\")\n", + " else:\n", + " return scs_df\n", + " \n", + "\n", + "class Tribe(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'tribe'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " students = relationship(\"Student\", backref=\"tribe\")\n", + " evals = relationship(\"Eval\", backref=\"tribe\")\n", + "\n", + " def __repr__(self):\n", + " return f\"\"\n", + " \n", + " def to_df(self, columns = [\"id\", \"name\", \"grade\"]):\n", + " cara_dict = {c:self.__getattribute__(c) for c in columns}\n", + " return pd.DataFrame.from_dict([cara_dict])\n", + " \n", + " def students_df(self, columns=[\"id\", \"name\", \"surname\", \"fullname\", \"tribe_id\"]):\n", + " dfs = []\n", + " for s in self.students:\n", + " dfs.append(s.to_df())\n", + " return pd.concat(dfs)\n", + "\n", + "class Eval(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'eval'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " exercises = relationship(\"Exercise\", backref=\"Eval\")\n", + " \n", + " def __repr__(self):\n", + " return f\"\"\n", + " \n", + " @property\n", + " def score_rate(self):\n", + " return sum([ex.score_rate for ex in self.exercises])\n", + "\n", + "class Exercise(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'exercise'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " questions = relationship(\"Question\", backref=\"exercise\")\n", + " \n", + " def __repr__(self):\n", + " return f\"\"\n", + " \n", + " @property\n", + " def score_rate(self):\n", + " return sum([q.score_rate for q in self.questions])\n", + "\n", + "class Question(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'question'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " scores = relationship(\"Score\", backref=\"question\")\n", + " \n", + " def __repr__(self):\n", + " return f\"\" \n", + " \n", + " def to_df(self,\\\n", + " columns = [\"id\", \"name\", \"score_rate\",\\\n", + " \"is_leveled\", \"exercise_id\",\\\n", + " \"competence\", \"domain\", \"comment\"],\\\n", + " ):\n", + " cara_dict = {c:self.__getattribute__(c) for c in columns}\n", + " return pd.DataFrame.from_dict([cara_dict])\n", + "\n", + "class Score(Base):\n", + " \"\"\"\"\"\"\n", + " __tablename__ = 'score'\n", + " __table_args__ = {'autoload':True}\n", + " \n", + " def to_df(self, question=True, student=True):\n", + " score_dict = {c:self.__getattribute__(c) for c in [\"student_id\", \"question_id\", \"value\"]}\n", + " score_df = pd.DataFrame.from_dict([score_dict])\n", + " \n", + " # pas pratique la gestion des suffixes\n", + " # Il faudrait changer le nom des colonnes\n", + " if question:\n", + " qu_df = self.question.to_df()\n", + " score_df = pd.merge(score_df, qu_df,\\\n", + " left_on='question_id', right_on='id',\\\n", + " suffixes=('_score', '_question'))\n", + " \n", + " if student:\n", + " s_df = self.student.to_df()\n", + " score_df = pd.merge(score_df, s_df,\\\n", + " left_on='student_id', right_on='id',\\\n", + " suffixes=('_score', '_student'))\n", + " return score_df\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def loadSession():\n", + " \"\"\"\"\"\"\n", + " metadata = Base.metadata\n", + " Session = sessionmaker(bind=engine)\n", + " session = Session()\n", + " return session" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "session = loadSession()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:25,781 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)\n", + "2018-02-19 07:54:25,783 INFO sqlalchemy.engine.base.Engine SELECT tribe.id AS tribe_id, tribe.name AS tribe_name, tribe.grade AS tribe_grade \n", + "FROM tribe\n", + "2018-02-19 07:54:25,784 INFO sqlalchemy.engine.base.Engine ()\n" + ] + } + ], + "source": [ + "tribes = session.query(Tribe).all()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = tribes[0]\n", + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gradeidname
03e1302
\n", + "
" + ], + "text/plain": [ + " grade id name\n", + "0 3e 1 302" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t.to_df()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:25,841 INFO sqlalchemy.engine.base.Engine SELECT eval.id AS eval_id, eval.name AS eval_name, eval.term AS eval_term, eval.type AS eval_type, eval.comment AS eval_comment, eval.tribe_id AS eval_tribe_id \n", + "FROM eval \n", + "WHERE ? = eval.tribe_id\n", + "2018-02-19 07:54:25,843 INFO sqlalchemy.engine.base.Engine (1,)\n", + "2018-02-19 07:54:25,847 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,852 INFO sqlalchemy.engine.base.Engine (1,)\n", + "2018-02-19 07:54:25,858 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,859 INFO sqlalchemy.engine.base.Engine (1,)\n", + "2018-02-19 07:54:25,863 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,873 INFO sqlalchemy.engine.base.Engine (2,)\n", + "Evaluation DS1 mise en jambe sur 0\n", + "Ex 1 - Prendre la température sur 0\n", + "\tQu 1 Lecture du thermomètre sur 0\n", + "\tQu 2 Suivre programme de calculs sur 0\n", + "\tQu 2.c Renverser un programme de calculs sur 0\n", + "Ex 2 - Maladroite! sur 0\n", + "\tQu Lire le tableau et le graphique sur 0\n", + "\tQu Décomposer le problème sur 0\n", + "\tQu Manipuler les grandeurs sur 0\n", + "\tQu Mener à bien les calculs sur 0\n", + "\tQu Rédaction sur 0\n", + "--------------------\n", + "2018-02-19 07:54:25,876 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,878 INFO sqlalchemy.engine.base.Engine (5,)\n", + "2018-02-19 07:54:25,880 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,881 INFO sqlalchemy.engine.base.Engine (12,)\n", + "2018-02-19 07:54:25,883 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,885 INFO sqlalchemy.engine.base.Engine (13,)\n", + "2018-02-19 07:54:25,887 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,888 INFO sqlalchemy.engine.base.Engine (14,)\n", + "2018-02-19 07:54:25,891 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,893 INFO sqlalchemy.engine.base.Engine (15,)\n", + "Evaluation DS2 sur 0\n", + "Ex 1 - Techniques sur 0\n", + "\tQu 1 Ordre et écriture sur 0\n", + "\tQu 2 et 3 Diviseur et décomposition sur 0\n", + "Ex 2 - Agrandissement sur 0\n", + "\tQu Comment agrandir sur 0\n", + "\tQu Rédaction et explications sur 0\n", + "Ex 3 - Confiseries sur 0\n", + "\tQu 1 Nombre bonbons sur 0\n", + "\tQu 2 et 3 Écriture des probabiltés sur 0\n", + "\tQu 3 Plus probable sur 0\n", + "\tQu 4 Calculs de compositions sur 0\n", + "\tQu 4.b Raisonnement sur 0\n", + "Ex 4 - Rangement sur 0\n", + "\tQu Choix des opérations sur 0\n", + "\tQu Explications sur 0\n", + "--------------------\n", + "2018-02-19 07:54:25,896 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,899 INFO sqlalchemy.engine.base.Engine (8,)\n", + "2018-02-19 07:54:25,902 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,903 INFO sqlalchemy.engine.base.Engine (22,)\n", + "Evaluation Pyramide de pièces sur 0\n", + "Ex sur 0\n", + "\tQu Clarté des explications, utilisation du vocabulaire sur 0\n", + "\tQu Mener un raisonnement sur 0\n", + "\tQu Mener à bien les calculs sur 0\n", + "\tQu Dessins et tableur sur 0\n", + "\tQu Rendu à temps sur 0\n", + "--------------------\n", + "2018-02-19 07:54:25,912 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,916 INFO sqlalchemy.engine.base.Engine (10,)\n", + "2018-02-19 07:54:25,919 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,920 INFO sqlalchemy.engine.base.Engine (27,)\n", + "2018-02-19 07:54:25,923 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,926 INFO sqlalchemy.engine.base.Engine (28,)\n", + "2018-02-19 07:54:25,929 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,930 INFO sqlalchemy.engine.base.Engine (29,)\n", + "2018-02-19 07:54:25,932 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,933 INFO sqlalchemy.engine.base.Engine (30,)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Evaluation DS3 sur 17.0\n", + "Ex 1 -QCM sur 4\n", + "\tQu sur 4\n", + "Ex 2 sur 5.0\n", + "\tQu Explications des calculs sur 1.5\n", + "\tQu Formule tableur sur 1\n", + "\tQu Choix des opérations sur 1\n", + "\tQu Manipulation des grands nombres sur 0.5\n", + "\tQu Comparaison sur 1\n", + "Ex 3 sur 5\n", + "\tQu 1 Démontrer parallèle sur 1\n", + "\tQu 2 Reconnaître Thalès sur 1\n", + "\tQu 2 Calculer EC sur 1\n", + "\tQu 2 Rédaction sur 1\n", + "\tQu 2 Conversions sur 1\n", + "Ex 4 sur 3\n", + "\tQu Utiliser les bonnes informations sur 1\n", + "\tQu Choix des calculs sur 1\n", + "\tQu Reconnaître fractions sur 1\n", + "--------------------\n", + "2018-02-19 07:54:25,941 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,944 INFO sqlalchemy.engine.base.Engine (14,)\n", + "2018-02-19 07:54:25,947 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,949 INFO sqlalchemy.engine.base.Engine (38,)\n", + "2018-02-19 07:54:25,952 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,953 INFO sqlalchemy.engine.base.Engine (39,)\n", + "2018-02-19 07:54:25,959 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,961 INFO sqlalchemy.engine.base.Engine (40,)\n", + "Evaluation DM noel sur 11\n", + "Ex 1 techniques de calculs sur 5\n", + "\tQu 1 Fractions à trou sur 1\n", + "\tQu 2 Calculs fraction sur 1\n", + "\tQu 3 Evaluer sur 1\n", + "\tQu 3 Priorité de calculs sur 1\n", + "\tQu 4 Réduire une expression sur 1\n", + "Ex 2 Thalès sur 2\n", + "\tQu Rédaction du théorème de Thalès sur 1\n", + "\tQu Utilisation du théorème sur 1\n", + "Ex 3 Mes bonbons préférés sur 4\n", + "\tQu 1 Nombre d'issues sur 1\n", + "\tQu 2 à 5 Calculer un probabilité sur 1\n", + "\tQu 2 à 5 Vocabulaire et explications sur 1\n", + "\tQu 5 Comparaison de probabilité sur 1\n", + "--------------------\n", + "2018-02-19 07:54:25,972 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:25,975 INFO sqlalchemy.engine.base.Engine (16,)\n", + "2018-02-19 07:54:25,977 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,978 INFO sqlalchemy.engine.base.Engine (43,)\n", + "2018-02-19 07:54:25,980 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,983 INFO sqlalchemy.engine.base.Engine (44,)\n", + "2018-02-19 07:54:25,986 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,988 INFO sqlalchemy.engine.base.Engine (45,)\n", + "2018-02-19 07:54:25,990 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,991 INFO sqlalchemy.engine.base.Engine (46,)\n", + "2018-02-19 07:54:25,994 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,996 INFO sqlalchemy.engine.base.Engine (47,)\n", + "2018-02-19 07:54:25,997 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:25,998 INFO sqlalchemy.engine.base.Engine (51,)\n", + "Evaluation DS4 sur 38\n", + "Ex 1 QCM sur 6\n", + "\tQu 1 à 3 sur 3\n", + "\tQu 4 à 6 sur 3\n", + "Ex 2 Bien assis? sur 5\n", + "\tQu Reconnaître Thalès sur 1\n", + "\tQu Rédaction sur 2\n", + "\tQu Les calculs sur 2\n", + "Ex 3 L'urne sur 6\n", + "\tQu 1 à 3 Calculer une probabillté sur 2\n", + "\tQu 2 Comparer des probabilités sur 1\n", + "\tQu 2 Penser au probabilités sur 1\n", + "\tQu 3 Changement de situation sur 2\n", + "Ex 4 Programme de calculs sur 7\n", + "\tQu Phrase de Sophie et Gabriel sur 3\n", + "\tQu Phrase de Martin sur 2\n", + "\tQu Développer (Faïza) sur 1\n", + "\tQu Reconnaître le double sur 1\n", + "Ex 5 Roule cycliste sur 8\n", + "\tQu 1.a Calcul de la distance sur 1\n", + "\tQu 1.b Formule tableur sur 1\n", + "\tQu 1.c Construction de la fonction sur 1\n", + "\tQu 1.d Calcul du temps sur 1\n", + "\tQu 2 a et b Lecture graphique sur 2\n", + "\tQu 2.c Calcul de la distance sur 1\n", + "\tQu d Reconnaître la proportionnalité sur 1\n", + "Ex Présentation sur 6\n", + "\tQu sur 6\n", + "--------------------\n", + "2018-02-19 07:54:26,001 INFO sqlalchemy.engine.base.Engine SELECT exercise.id AS exercise_id, exercise.name AS exercise_name, exercise.eval_id AS exercise_eval_id, exercise.date AS exercise_date, exercise.comment AS exercise_comment \n", + "FROM exercise \n", + "WHERE ? = exercise.eval_id\n", + "2018-02-19 07:54:26,004 INFO sqlalchemy.engine.base.Engine (21,)\n", + "2018-02-19 07:54:26,006 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,007 INFO sqlalchemy.engine.base.Engine (64,)\n", + "2018-02-19 07:54:26,010 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,011 INFO sqlalchemy.engine.base.Engine (65,)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:26,012 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,013 INFO sqlalchemy.engine.base.Engine (66,)\n", + "2018-02-19 07:54:26,015 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,016 INFO sqlalchemy.engine.base.Engine (67,)\n", + "2018-02-19 07:54:26,017 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,018 INFO sqlalchemy.engine.base.Engine (68,)\n", + "2018-02-19 07:54:26,020 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,021 INFO sqlalchemy.engine.base.Engine (69,)\n", + "2018-02-19 07:54:26,023 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,024 INFO sqlalchemy.engine.base.Engine (70,)\n", + "2018-02-19 07:54:26,025 INFO sqlalchemy.engine.base.Engine SELECT question.id AS question_id, question.name AS question_name, question.score_rate AS question_score_rate, question.is_leveled AS question_is_leveled, question.exercise_id AS question_exercise_id, question.competence AS question_competence, question.domain AS question_domain, question.comment AS question_comment \n", + "FROM question \n", + "WHERE ? = question.exercise_id\n", + "2018-02-19 07:54:26,027 INFO sqlalchemy.engine.base.Engine (91,)\n", + "Evaluation DNB blanc1 sur 100\n", + "Ex 1 - QCM sur 10\n", + "\tQu 1 QCM sur 2\n", + "\tQu 2 QCM sur 2\n", + "\tQu 3 QCM sur 2\n", + "\tQu 4 QCM sur 2\n", + "\tQu 5 QCM sur 2\n", + "Ex 2 - Boite de chocolat sur 10\n", + "\tQu 1 à 3 Calcul proba sur 4\n", + "\tQu 2 Modification situation sur 3\n", + "\tQu 3 Nouvelle composition sur 3\n", + "Ex 3 - Scratch sur 10\n", + "\tQu 1 Que fait le programme sur 3\n", + "\tQu 2 Réponse à 13 sur 4\n", + "\tQu 3 Age pour conduire sur 3\n", + "Ex 4 - Programme de calcul sur 15\n", + "\tQu 1 Application du calcul sur 5\n", + "\tQu 2 Renverser le calcul sur 4\n", + "\tQu 3 Appliquer à x et developper sur 6\n", + "Ex 5 - Macaron sur 15\n", + "\tQu 1 Proportionnalité sur 3\n", + "\tQu 2 et 4 Lecture graphique sur 4\n", + "\tQu 3 Écart de température sur 4\n", + "\tQu 4 Satisfaction sur 4\n", + "Ex 6 - Inspecteur sur 15\n", + "\tQu 1 Hypothèses sur 2\n", + "\tQu 1 Reconnaissance des théorèmes sur 3\n", + "\tQu 1 Calculs dans les théorèmes sur 4\n", + "\tQu 1 Réponse à la question sur 3\n", + "\tQu 2 Confiance au pilote sur 3\n", + "Ex 7 - La tache sur 15\n", + "\tQu Décomposition du problème sur 3\n", + "\tQu Lecture des informations sur 4\n", + "\tQu Calculs sensé sur 4\n", + "\tQu Clarté des explications sur 4\n", + "Ex Présentation sur 10\n", + "\tQu sur 10\n", + "--------------------\n" + ] + } + ], + "source": [ + "for ev in t.evals:\n", + " print(f\"Evaluation {ev.name} sur {ev.score_rate}\")\n", + " for ex in ev.exercises:\n", + " print(f\"Ex {ex.name} sur {ex.score_rate}\")\n", + " for qu in ex.questions:\n", + " print(f\"\\tQu {qu.name} {qu.comment} sur {qu.score_rate}\")\n", + " print(\"-\"*20)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:26,040 INFO sqlalchemy.engine.base.Engine SELECT score.id AS score_id, score.question_id AS score_question_id, score.student_id AS score_student_id, score.value AS score_value \n", + "FROM score\n", + "2018-02-19 07:54:26,043 INFO sqlalchemy.engine.base.Engine ()\n" + ] + } + ], + "source": [ + "sc = session.query(Score).all()[123]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-02-19 07:54:26,223 INFO sqlalchemy.engine.base.Engine SELECT student.id AS student_id, student.name AS student_name, student.surname AS student_surname, student.mail AS student_mail, student.commment AS student_commment, student.tribe_id AS student_tribe_id \n", + "FROM student \n", + "WHERE student.id = ?\n", + "2018-02-19 07:54:26,225 INFO sqlalchemy.engine.base.Engine (10,)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
question_idstudent_idvaluecommentcompetencedomainexercise_idid_scoreis_leveledname_scorescore_ratefullnameid_studentname_studentsurnametribe_id
04103Lire le tableau et le graphiqueCher4opérations24True0ATTOUMANE ALI Fatima10ATTOUMANE ALIFatima1
\n", + "
" + ], + "text/plain": [ + " question_id student_id value comment competence \\\n", + "0 4 10 3 Lire le tableau et le graphique Cher \n", + "\n", + " domain exercise_id id_score is_leveled name_score score_rate \\\n", + "0 4opérations 2 4 True 0 \n", + "\n", + " fullname id_student name_student surname tribe_id \n", + "0 ATTOUMANE ALI Fatima 10 ATTOUMANE ALI Fatima 1 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sc.to_df()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}