Python 在shell中调用函数时发生sqlite错误
我得到一个错误:Python 在shell中调用函数时发生sqlite错误,python,database,sqlite,Python,Database,Sqlite,我得到一个错误: builtins.NameError: name 'sqlite3' is not defined 在线 conn = sqlite3.connect(db) 谁能帮我修一下吗 def run_query(db, q, args=None): """(str, str, tuple) -> list of tuple Return the results of running query q with arguments args on dat
builtins.NameError: name 'sqlite3' is not defined
在线
conn = sqlite3.connect(db)
谁能帮我修一下吗
def run_query(db, q, args=None):
"""(str, str, tuple) -> list of tuple
Return the results of running query q with arguments args on
database db."""
conn = sqlite3.connect(db)
cur = conn.cursor()
# execute the query with the given args passed
# if args is None, we have only a query
if args is None:
cur.execute(q)
else:
cur.execute(q, args)
results = cur.fetchall()
cur.close()
conn.close()
return results
def get_course_instructors(db, course):
'''Return the Course number, sections and instructors for the given course
number.'''
return (run_query(db, '''SELECT CourseNumber, sections, instructors WHERE
course = ?''', (course)))
从课程表中获取课程代码、章节和讲师,假设变量名为课程表中的“CourseNumber、sections、讲师”
return run_query(db, '''SELECT Course, Section, Name FROM Courses WHERE course = ?''', (course,))
确保return语句中(course)后面有逗号
测试用例应该是这样的
get_course_instructors('exams.db', 'AFSA01H3F')
[('AFSA01H3F', 'LEC01', 'S. Rockel')]
在我脑子里,我想说你需要
导入sqlite3
。如果没有安装sqlite3,pip安装sqlite3
。您仍然需要导入sqlite3。我修复了它,但是现在我得到了这个错误。cur.execute(q,args)sqlite3.OperationalError:没有这样的列:CourseNumberThis是sqlite,它告诉您在数据库表中引用的列不存在。查询中的一列(CourseNumber、sections、instructors)可能拼写错误。也许CourseNumber的情况是不正确的。Firefox有一个插件,可以用来查看sqlite数据库的表和列,以确定这是否是问题所在。但说明中说返回课程号。如果我使用大写或小写,会有区别吗?在查看SQL查询时,它无论如何都是不正确的。你需要让它看看桌子。因此,它应该类似于从课程=?
中选择课程编号、章节、讲师。我武断地假设表名是courses。还要注意,WHERE course=?
子句意味着在同一个表中有一个course列。注释不用于扩展讨论;这段对话已经结束。
get_course_instructors('exams.db', 'AFSA01H3F')
[('AFSA01H3F', 'LEC01', 'S. Rockel')]