Ich erstelle eine App mit einer Flask-basierten API und einer PostgreSQL-Datenbank. Ein großer Teil des Projekts ist ein Empfehlungsalgorithmus, der Daten dynamisch aus der Datenbank abruft und in Pandas DataFrames verarbeitet. Wenn ich versuche, auf http://127.0.0.1:5000/recomender/1 zuzugreifen, um Empfehlungen für den Benutzer mit student_id = 1 zu erhalten, erhalte ich die Fehlermeldung:
TypeError: argument of type 'NoneType' is not iterable
[/b]
Dieser Fehler ist unerwartet, da die Datenbank gültige Daten für student_id = 1 enthält. Hier ist ein Ausdruck der abgerufenen Daten (mit psycopg2 und RealDictRow):
[/b] Während einige Felder mit „Keine“ gefüllt sind, sollten sie sich überhaupt nicht auf das Erhalten einer Empfehlung auswirken, der Code zum Erhalten von Empfehlungen benötigt sie jedoch nicht:
def calculate_matching(student_interest, student_grade, student_intended_major, opprtunity_tags):
score = 0
for tag in opprtunity_tags:
if tag in student_interest:
score += 2
if tag in student_grade:
score += 1
if tag in student_intended_major:
score += 3
return score
@app.route('/recomender/')
def createRecomendations(student_id):
# Dynamically fetch the latest student data from the database
students_df = get_students_df()
opportunities_df = get_opportunities_df()
# Ensure the student exists in the dataframe
if student_id not in students_df.index:
return {'error': 'Student not found'}, 404
# Get the student's information
recstudent = students_df.loc[students_df.index == student_id].iloc[0]
student_interest = recstudent['interest']
student_grade = recstudent['grade']
student_intended_major = recstudent['intended_major']
match_scores = []
for ind, row in opportunities_df.iterrows():
opportunity_tags = row['tags']
match_score = calculate_matching(student_interest, student_grade, student_intended_major, opportunity_tags)
# Update the DataFrame with the match score
opportunities_df.at[ind, 'match_score'] = match_score
match_scores.append({'opportunity': row['title'], 'match_score': match_score})
print(student_interest)
print(match_scores)
return {'recommendations': match_scores}
und ich rufe Schüler- und Aktivitätsdaten dynamisch ab
Ich füge die Informationen übrigens in einen Pandas-Datenrahmen ein.
Ich hatte den gleichen Fehler http://127.0.0.1:5000/ recomender/7 (Empfehlungen für den Benutzer mit dem Studentenausweis 7 erhalten) und ich habe das Problem behoben, indem ich das Interesse geändert habe, das zunächst das Lesen von Daten hatte
[/b] und ich haben das Interesse in der Datenbank auf Wissenschaft und Technologie geändert. Ich habe die gleiche Änderung mit student_id:1 vorgenommen und es hat immer noch nicht funktioniert. Ich habe verschiedene Änderungen an den Interessen versucht, die mit den Interessen einiger anderer Daten übereinstimmen, und habe trotzdem den Fehler erhalten. Zu den weiteren Entitäten, die funktioniert haben, gehören:
Ich erstelle eine App mit einer Flask-basierten API und einer PostgreSQL-Datenbank. Ein großer Teil des Projekts ist ein Empfehlungsalgorithmus, der Daten dynamisch aus der Datenbank abruft und in Pandas DataFrames verarbeitet. Wenn ich versuche, auf http://127.0.0.1:5000/recomender/1 zuzugreifen, um Empfehlungen für den Benutzer mit student_id = 1 zu erhalten, erhalte ich die Fehlermeldung:
[b][code]TypeError: argument of type 'NoneType' is not iterable[/code][/b] Dieser Fehler ist unerwartet, da die Datenbank gültige Daten für student_id = 1 enthält. Hier ist ein Ausdruck der abgerufenen Daten (mit psycopg2 und RealDictRow):[b][code]RealDictRow([('name', 'Jane Doe'), ('student_id', 1), ('email', 'jane.doe@example.com'), ('phone', '123-456-7890'), ('grade', 'junior'), ('race', 'hispanic'), ('birthday', datetime.date(2006, 5, 15)), ('gender', 'female'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 1, 25, 15, 235039)), ('intended_major', 'COMPUTER SCIENCE'), ('interest', ['Science', 'technology']), ('gpa', None), ('hashed_password', None), ('username', None)])[/code][/b] Während einige Felder mit „Keine“ gefüllt sind, sollten sie sich überhaupt nicht auf das Erhalten einer Empfehlung auswirken, der Code zum Erhalten von Empfehlungen benötigt sie jedoch nicht: [code]def calculate_matching(student_interest, student_grade, student_intended_major, opprtunity_tags): score = 0
for tag in opprtunity_tags: if tag in student_interest: score += 2 if tag in student_grade: score += 1 if tag in student_intended_major: score += 3
return score [/code] und [code]@app.route('/recomender/') def createRecomendations(student_id): # Dynamically fetch the latest student data from the database students_df = get_students_df() opportunities_df = get_opportunities_df()
# Ensure the student exists in the dataframe if student_id not in students_df.index: return {'error': 'Student not found'}, 404
# Get the student's information recstudent = students_df.loc[students_df.index == student_id].iloc[0]
print(student_interest) print(match_scores) return {'recommendations': match_scores} [/code] und ich rufe Schüler- und Aktivitätsdaten dynamisch ab [code]def get_students_df(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT * FROM students') students = cursor.fetchall() cursor.close() conn.close() print(students) return pd.DataFrame(students)
def get_opportunities_df(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT * FROM oppertunities') opportunites = cursor.fetchall() cursor.close() conn.close() return pd.DataFrame(opportunites) [/code] Ich füge die Informationen übrigens in einen Pandas-Datenrahmen ein. Ich hatte den gleichen Fehler http://127.0.0.1:5000/ recomender/7 (Empfehlungen für den Benutzer mit dem Studentenausweis 7 erhalten) und ich habe das Problem behoben, indem ich das Interesse geändert habe, das zunächst das Lesen von Daten [b] hatte[code]RealDictRow([('name', 'algo rithim'), ('student_id', 7), ('email', 'algo@rithim.com'), ('phone', '123-456-9901'), ('grade', 'junior'), ('race', 'black'), ('birthday', datetime.date(2005, 6, 15)), ('gender', 'male'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 11, 41, 1, 27045)), ('intended_major', 'BIOLOGY'), ('interest', ['science', 'research']), ('gpa', 3), ('hashed_password', None), ('username', None)])[/code][/b] und ich haben das Interesse in der Datenbank auf Wissenschaft und Technologie geändert. Ich habe die gleiche Änderung mit student_id:1 vorgenommen und es hat immer noch nicht funktioniert. Ich habe verschiedene Änderungen an den Interessen versucht, die mit den Interessen einiger anderer Daten übereinstimmen, und habe trotzdem den Fehler erhalten. Zu den weiteren Entitäten, die funktioniert haben, gehören: [b][code][RealDictRow([('name', 'Johnny Doe'), ('student_id', 5), ('email', 'john.do2@example.com'), ('phone', '123-456-7840'), ('grade', 'junior'), ('race', 'white'), ('birthday', datetime.date(2005, 6, 15)), ('gender', 'male'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 4, 59, 29, 242410)), ('intended_major', 'MASS MEDIA'), ('interest', None), ('gpa', None), ('hashed_password', None), ('username', None)])[/code][/b] und [b][code]RealDictRow([('name', 'Testuser'), ('student_id', 21), ('email', 'Testuser@testmail.com'), ('phone', '(912) 134-3553'), ('grade', 'junior'), ('race', 'black'), ('birthday', datetime.date(2006, 1, 14)), ('gender', 'male'), ('income', None), ('creeated_at', datetime.datetime(2024, 12, 4, 13, 46, 23, 364021)), ('intended_major', 'VISUAL AND PERFORMING ARTS'), ('interest', ['Science', 'Computers', 'Technology', 'Male Identifying', 'College Prep', 'Business', 'Chemistry', 'Space Exploration', 'Social Justice', 'Psychology', 'U.S. History', 'World History']), ('gpa', None), ('hashed_password', '$2b$12$cz5M9yuK.9ILN431TPQ51ul46a3sCDCOCLxZXX6TF8P4yV5S.7dZy'), ('username', None)]),[/code][/b]
Ich arbeite an einem Python-Skript zum Parsen einer JSON-Datei, aber beim Versuch, auf die Daten zuzugreifen, tritt ein Problem auf. Ich erhalte die folgende Fehlermeldung:
Das ist wahrscheinlich eine dumme Frage, aber ich konnte die Antwort auch auf dieser Seite nicht finden (habe dies gefunden, aber es ist nicht genau das, da die empfohlene Lösung darin besteht,...
Das ist wahrscheinlich eine dumme Frage, aber ich konnte die Antwort auch auf dieser Seite nicht finden (habe dies gefunden, aber es ist nicht genau das, da die empfohlene Lösung darin besteht,...
Caused by: org.postgresql.util.PSQLException: ERROR: column columnName is of type text[] but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position:...