1

Python スクリプトで SQLite3 (txt ファイルからのデータ) で新しいテーブルを作成しようとしています。列ヘッダーを提供する SQL コマンドとして使用する文字列を作成しています。ただし、この文字列の変数を cursor.execute() に挿入すると、構文エラーが発生します。問題は、print() をコピーして cursor.execute に貼り付けると、スクリプトが機能することです。ただし、この同じスクリプトをさまざまな txt ファイルに使用したいので、ファイルの列ヘッダーに適応させる必要があります。

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

ただし、 print(daQuery) の値をコピーしてコードに直接貼り付けると、機能します。

4

1 に答える 1

1

一重引用符と二重引用符の両方を使用しているようです。このようにしてみてください:

daQuery="create table " + daTableName + " (" + DaHeadersString + ")"
于 2012-09-30T03:19:45.300 に答える