2012-09-30 3 views
1

Python 스크립트에서 SQLite3 (txt 파일에서 가져 오는 데이터)에 새 테이블을 만들려고합니다. 열 머리글을 제공 할 SQL 명령으로 사용할 문자열을 만듭니다. 그러나이 문자열에 대한 변수를 cursor.execute()에 삽입하면 구문 오류가 발생합니다. 문제는, print()를 복사 한 다음 copy.execute에 붙여 넣으면 스크립트가 작동한다는 것입니다. 그러나이 동일한 스크립트를 다양한 txt 파일에 사용하고 싶기 때문에 파일의 열 머리글에 적응해야합니다.Python의 txt 파일에서 새 sqlite 데이터베이스 테이블 만들기

def CreateTable (daDB, daFile, daTableName): #Creates a table with column headers as first row of file 
    con=sqlite3.connect(daDB) 
    curs=con.cursor() 
    LinesList=FileReadIn(daFile) 
    Headers=LinesList[0] 
    HeadersString="" 
    for word in Headers: 
     HeadersString += word + ", " 
    DaHeadersString=HeadersString[0:-2] 
    daQuery="'create table " + daTableName + " (" + DaHeadersString + ")'" 
    print (daQuery) 
    curs.execute(daQuery) 
    con.commit() 
    con.close() 

이 생성

CreateTableFromText ('animalsheaderstest.sqltdb','animals.txt','animalstable') 
'create table animalstable (Owner, Name, Species)' 

Traceback (most recent call last): 
    File "<pyshell#108>", line 1, in <module> 
    CreateTable ('animalsheaderstest.sqltdb','animals.txt','animalstable') 
    File  "/Users/zeintawil/Zeins_Files/School/Senior/OPIM_399/python/practice/ReadInPrac.py", line  62, in CreateTable 
    curs.execute(daQuery) 
OperationalError: near "'create table animalstable (Owner, Name, Species)'": syntax error 

을 그러나, 나는 복사 직접 코드로 인쇄 (daQuery)의 값을 붙여 넣을 때, 그것을 작동합니다.

답변

0

작은 따옴표와 큰 따옴표를 모두 사용하는 것 같습니다. 다음과 같이 시도하십시오 :

daQuery="create table " + daTableName + " (" + DaHeadersString + ")" 
+0

감사합니다. 그것은 저에게 사소한 것이 었습니다! –

관련 문제