2012-03-29 6 views
3

저는 python에서 sqlite3을 사용하는 방법을 배우고 있습니다. ID와 이름의 두 열이있는 간단한 테이블이 있습니다.sqlite3 python 열 추가 및 값 업데이트

나는 (내가 ipython하고 있어요) 다음 명령을 사용하여이 테이블에 새 열을 추가하는 시도

:

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

c.execute("alter table studentinfo add column Group integer") 

내가받을 다음과 같은 오류 : 다음

OperationalError: near "Group": syntax error 

,에 기초 여기에 예제가 있습니다. 나는 시도했다,

c.execute("alter table studentinfo add column 'Group' integer") 

이것은 일했다. 그러나, 나는 지금 또 다른 문제가있다. 분명히 열 이름은 "Group"대신 " 'Group'"입니다.

예를 들어,이 열의 값을 업데이트하려고하면 다음 세 명령 중 하나가 작동하고 두 개는 수행하지 않습니다.

OperationalError: near "Group": syntax error 

가 그럼 난 열 이름 주위에 따옴표를 넣어 시도 :

c.execute("update studentinfo set 'Group'=1 where 'ID' <= 4") 
#This did not work either. Gives no error, but does not do anything. Records remain 
#unchanged. 

그런 다음, 나는 Group 따옴표로 시도하지만 주위 ID

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

c.execute("update studentinfo set Group=1 where ID <= 4") #This did not work. 

나는 다음과 같은 오류가 발생합니다. 이것은 잘 동작했다.

c.execute("update studentinfo set 'Group'=1 where ID <= 4") #This worked fine. 

즉, 열 이름을 '그룹'(따옴표 포함)으로 생각합니다. Group이라는 이름의 열을 어떻게 추가합니까?

감사합니다.

답변

6

테이블 이름이나 열 이름이 SQL 키워드 (예 : GROUP)와 같으면 오류가 생성됩니다. ``not ''를 사용하여 테이블 이름을 인용해야합니다. 따라서 다음을 사용할 수 있습니다 :

alter table studentinfo add column `Group` integer 
+0

Duv 및 @brice : GROUP이 키워드라는 것을 기억하지 못했습니다. 열 이름이 변경됩니다. 감사. – Curious2learn

1

문제는 ALTER TABLE 명령을 수행 한 방법입니다. 지정한 열 이름 주위에 작은 따옴표를 포함하여 이름의 일부였습니다. 따옴표를 버리면 예상대로 작동합니다.

FYI : dot-s 명령 (.s)을 사용하여 sqlite3의 스키마를 쿼리 할 수 ​​있습니다. 실제 열 이름을 보여줍니다. 다음은 간단한 샘플입니다.

SQLite version 3.7.9 2011-11-01 00:52:41 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table a(mycol1 INT); 
sqlite> alter table a add column mycol2 int; 
sqlite> alter table a add column 'mycol3' int; 
sqlite> .s 
CREATE TABLE a(mycol1 INT , mycol2 int, 'mycol3' int); 
sqlite> 
3

GROUP은 SQLite 키워드입니다.

해결 방법 : 열의 이름을 다른 것으로 지정하십시오.