سؤال

وأعتقد أنني كونه، ربما عدم استيراد الحق في صفقة أحمق، ولكن عندما أفعل ...


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 parametrized. أنا جديدة على الثعبان وDB-API على الرغم من مساعدتي! THANKS

هل كانت مفيدة؟

المحلول

وذلك لأن المعلمات يمكن أن تنتقل فقط إلى القيم. لا يمكن parametrized اسم الجدول.

وأيضا لديك علامات الاقتباس حول حجة parametrized في الاستعلام الثاني. إزالة علامات الاقتباس، يتم التعامل مع مهربا من قبل مكتبة يؤكد تلقائيا بالنسبة لك.

نصائح أخرى

وحاول إزالة علامات الاقتباس في السطر الذي يسند إلى stmt2:

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

وبالإضافة إلى ذلك، كما يقول nosklo، لا يمكنك استخدام علامة الاستفهام البارامترات مع عبارات CREATE TABLE. عصا اسم الجدول في SQL مباشرة.

إذا كنت تريد حقا أن تفعل ذلك، حاول شيئا من هذا القبيل:

ومواطنه قراءة (ديسيبل = "مشاريع"):

sql = "select * from %s"
sql = sql % db
c.execute(sql)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top