Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在shell中调用函数时发生sqlite错误_Python_Database_Sqlite - Fatal编程技术网

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')]