Python表单/提示SQLite输入

时间:2016-05-03 13:56:11

标签: python sqlite

为了学习SQL,我一直在工作中使用它。我列出了我工作的每个帐户以及我在处理该特定帐户时收集的信息。我的数据库有两个表我更新。一个是客户的信息,它总是随每个新帐户更新,另一个是机构表,有时会更新,但不是每次都更新。这两个表是关系型的。

正如我所说的,我是SQL的新手,并且一直在使用命令行来更新这些表,而且它变得很烦人。我认为这是一个简单的解决方案是运行一系列Python提示,查询每个列的用户,然后在提示结束时执行INSERT命令。然后它会询问我是否要为第二个表创建一个条目(因为我并不总是添加到这个表中)。

这些是我的表格。

> create table stu_info (
> id Integer,
> name text,
> CEEB integer,
> degree text,
> terms integer,
> comm text
> );
> create table coll_info (
> CEEB integer,
> name text,
> Accred text,
> Hours text,
> comm text
> );

在Python中,我认为只需使用raw_input()并在需要时在其周围添加一个int()就很容易。然后使用一个循环,这样在将每个新行添加到数据库之后,它将重新开始直到我完成当天。我的问题是我无法弄清楚如何通过Python执行sqlite命令,我无法弄清楚如何访问数据库。

每当我跑

import sqlite3

conn = sqlite3.connect(stu.db)
c = conn.cursor()
    enter code here

我得到NameError: name 'stu' is not defined

有任何帮助吗?我想这很简单,我的Google-fu很糟糕,经验不足甚至导致搜索结果变得无用......

2 个答案:

答案 0 :(得分:2)

它看起来像需要引号一样简单。

conn = sqlite3.connect("stu.db")

您获得的错误是因为范围中没有变量stu。只要“stu.db”在工作目录中,那么上面的代码段就可以工作。

答案 1 :(得分:1)

一旦我发现,感谢Jamie,文件名需要在引号中,我能够连接到数据库。然后,我能够解决问题。这是我的解决方案:

import sqlite3

conn = sqlite3.connect('stu.db')
c = conn.cursor()

def add_coll():
    cceeb = int(raw_input("CEEB:> "))
    cname = raw_input("Name:> ")
    ccred = raw_input("Accred:> ")
    ccal = raw_input("Calendar:> ")
    ccomm = raw_input("Comments:> ")

    c.execute("INSERT INTO coll VALUES (%d, '%s', '%s', '%s', '%s')" %
                (cceeb, cname, ccred, ccal, ccomm))


var = 1 #This creates an infinite loop
while var == 1:

    input_stu = raw_input("Add Student?:> ")

    if input_stu == 'no' or input_stu == 'n':
        add_coll()

    else:
        id = int(raw_input("ID:> "))
        name = raw_input("Name:> ")
        ceeb = int(raw_input("CEEB:> "))
        deg = raw_input("Degree:> ")
        terms = int(raw_input("Terms:> "))
        comm = raw_input("Comments:> ")

        c.execute("INSERT INTO stu VALUES (%d, '%s', %d, '%s', %d, '%s')" %
                (id, name, ceeb, deg, terms, comm))

        input_coll = raw_input("Add College?:> ")

        if input_coll == 'yes' or input_coll == 'y':
            #cceeb = int(raw_input("CEEB:> "))
            #cname = raw_input("Name:> ")
            #ccred = raw_input("Accred:> ")
            #ccal = raw_input("Calendar:> ")
            #
            #c.execute("INSERT INTO coll VALUES (%d, '%s', '%s', '%s')" %
            #           (cceeb, cname, ccred, ccal))
            add_coll()

    conn.commit()