From 7f9b7abde22ceca857af4b74362f1485cf3dd104 Mon Sep 17 00:00:00 2001 From: Miguel BarĂ£o Date: Fri, 27 Jan 2023 18:56:59 +0000 Subject: [PATCH] update initdb.py and learnapp.py to sqlalchemy 2.0 --- aprendizations/initdb.py | 6 +++--- aprendizations/learnapp.py | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/aprendizations/initdb.py b/aprendizations/initdb.py index e5e9883..8e221f7 100644 --- a/aprendizations/initdb.py +++ b/aprendizations/initdb.py @@ -131,9 +131,9 @@ def main(): # --- database stuff print(f'Database: {args.db}') - engine = create_engine(f'sqlite:///{args.db}', echo=False, future=True) + engine = create_engine(f'sqlite:///{args.db}') Base.metadata.create_all(engine) # Creates schema if needed - session = Session(engine, future=True) + session = Session(engine) # --- make list of students to insert/update students = [] @@ -183,7 +183,7 @@ def main(): count += 1 print(f' {sid}, {student.name}') passwd = (args.pw or sid).encode('utf-8') - student.password = bcrypt.hashpw(passwd, bcrypt.gensalt()) + student.password = str(bcrypt.hashpw(passwd, bcrypt.gensalt())) session.commit() print(f'Total {count} password(s) updated.') diff --git a/aprendizations/learnapp.py b/aprendizations/learnapp.py index 1765916..b112e6f 100644 --- a/aprendizations/learnapp.py +++ b/aprendizations/learnapp.py @@ -164,7 +164,7 @@ class LearnApp(): await asyncio.sleep(random()) query = select(Student).where(Student.id == uid) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: student = session.execute(query).scalar_one_or_none() if student is None: logger.info('User "%s" does not exist', uid) @@ -186,7 +186,7 @@ class LearnApp(): # get topics for this student and set its current state query = select(StudentTopic).where(StudentTopic.student_id == uid) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: student_topics = session.execute(query).scalars().all() state = {t.topic_id: { @@ -230,7 +230,7 @@ class LearnApp(): bcrypt.gensalt()) query = select(Student).where(Student.id == uid) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: session.execute(query).scalar_one().password = hashed_pw session.commit() @@ -260,7 +260,7 @@ class LearnApp(): finishtime=str(question['finish_time']), student_id=uid, topic_id=topic_id) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: session.add(answer) session.commit() @@ -285,7 +285,7 @@ class LearnApp(): query = select(StudentTopic) \ .where(StudentTopic.student_id == uid) \ .where(StudentTopic.topic_id == tid) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: student_topic = session.execute(query).scalar_one_or_none() if student_topic is None: # insert new studenttopic into database @@ -343,7 +343,7 @@ class LearnApp(): ''' Fill table 'Topic' with topics from the graph, if new ''' - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: db_topics = session.execute(select(Topic.id)).scalars().all() new = [Topic(id=t) for t in topics if t not in db_topics] if new: @@ -360,12 +360,13 @@ class LearnApp(): if not exists(database): raise LearnException('Database does not exist') - self._engine = create_engine(f'sqlite:///{database}', future=True) + # echo=True enables logging of the SQL emitted by sqlalchemy + self._engine = create_engine(f'sqlite:///{database}', echo=False) try: query_students = select(func.count(Student.id)) query_topics = select(func.count(Topic.id)) query_answers = select(func.count(Answer.id)) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: count_students = session.execute(query_students).scalar() count_topics = session.execute(query_topics).scalar() count_answers = session.execute(query_answers).scalar() @@ -584,7 +585,7 @@ class LearnApp(): StudentTopic.topic_id, StudentTopic.level, StudentTopic.date) - with Session(self._engine, future=True) as session: + with Session(self._engine) as session: # all students in the database FIXME only with answers of this course students = session.execute(query_students).all() -- libgit2 0.21.2