为了学习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很糟糕,经验不足甚至导致搜索结果变得无用......
答案 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()