質問

適切なパッケージをインポートしていない可能性がありますが、そうすると...


from pysqlite2 import dbapi2 as sqlite
import types
import re
import sys
...
    def create_asgn(self):
        stmt = "CREATE TABLE ? (login CHAR(8) PRIMARY KEY NOT NULL, grade INTEGER NOT NULL)"
        stmt2 = "insert into asgn values ('?', ?)"
        self.cursor.execute(stmt, (sys.argv[2],))
        self.cursor.execute(stmt2, [sys.argv[2], sys.argv[3]])
...
 I get the error pysqlite2.dbapi2.OperationalError: near "?": syntax error 

これは、pysqliteがqmarkパラメータ化されていることをドキュメントが示しているため、私にはほとんど意味がありません。私はpythonとdb-apiが初めてですが、助けてください!ありがとう

役に立ちましたか?

解決

これは、パラメーターをVALUESにのみ渡すことができるためです。テーブル名はパラメーター化できません。

また、2番目のクエリでパラメータ化された引数を引用符で囲みます。引用符を削除すると、エスケープは自動的に下線ライブラリによって処理されます。

他のヒント

stmt2に割り当てる行の引用符を削除してみてください:

    stmt2 = "insert into asgn values (?, ?)"

また、noskloが言うように、CREATE TABLEステートメントで疑問符のパラメーター化を使用することはできません。テーブル名をSQLに直接貼り付けます。

本当にやりたい場合は、次のようにしてください:

def read(db = <!> quot; projects <!> quot;):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top