【问题标题】:create a table and insert values into table创建表并将值插入表中
【发布时间】:2014-03-05 04:58:52
【问题描述】:

我使用以下代码创建了一个表,它可以工作

def createSQLCreateTableCommand(tableName, columns, foreignKeys):
    columns = ["%s"%(c) for c in columns]
    foreignKeys = ["FOREIGN KEY (%s) REFERENCES %s(%s)"%(fk[0],fk[1],fk[2]) for fk in foreignKeys]
    cmd = """CREATE TABLE IF NOT EXISTS %s (%s)"""%(tableName,','.join(columns+foreignKeys))
    return cmd


sqlEx = createSQLCreateTableCommand("class",[
            "name text", 
            "role text"],
            [])
conn = sqlite.connect(":memory:")
cursor = conn.cursor()

cursor.execute(sqlEx)

cursor.execute("""SELECT tbl_name FROM sqlite_master WHERE type = 'table'""")
print cursor.fetchall()

然后,我想在表中插入一些值,我编写了以下函数,但它给出了错误消息“表类没有名为'name','role'的列”。我很困惑,因为我刚刚在之前的函数中创建了一个表并且它起作用了。

def createSQLInsertCommand(tableName,columns):
    columns = ["%s"%(c) for c in columns]
    cmd = """INSERT INTO %s (%s) Values (?)""" %(tableName,columns)
    return cmd

sqlValidate = createSQLInsertCommand("class",["name","role"])

cursor.executemany(sqlValidate,[("Brian","Instructor"),("Steven","TA"),("Bob","TA"),("Jody","Student")])
cursor.execute("""SELECT * from class""")
print cursor.fetchall()

谁能帮我修复我的第二个功能?

【问题讨论】:

    标签: python sqlite python-2.7


    【解决方案1】:

    这是你的函数做错了什么以及如何解决它

    >>> columns = ["name","role"]
    >>> tableName = 'class'
    >>> """INSERT INTO %s (%s) Values (?)""" %(tableName,columns)
    "INSERT INTO class (['name', 'role']) Values (?)"
    >>> """INSERT INTO %s (%s) Values (?)""" %(tableName,','.join(columns))
    'INSERT INTO class (name,role) Values (?)'
    

    此外,如果您要插入 2 列,则必须有 2 个 ? 占位符,这些占位符应根据列生成,例如。

    >>> """INSERT INTO %s (%s) Values (%s)""" %(tableName,','.join(columns), ','.join(['?' for c in columns]))
    'INSERT INTO class (name,role) Values (?,?)'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2020-12-19
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      相关资源
      最近更新 更多