首页 > 解决方案 > sqllite3 中的参数

问题描述

为什么我尝试使用 '(?)' python 的每个参数(字符串)都给我这个问题?

item2 = str(message.sender.username)

print(message.sender.username)

sqlloc = ("create table (?) (" \
        " chat_id INTEGER NOT NULL PRIMARY KEY,"\
        " locpar varchar(20)," \
        " stoppar varchar(20)," \
        " locdes varchar(20) ," \
        " stopdes varchar(20));", item2)

connloc.execute(sqlloc)

输出:

Abdul_gan
operation parameter must be str

标签: pythonsqlite

解决方案


这就是我通常使用表名字符串参数动态创建表的方式:

def create_table(ptbl):

    """ Assemble DDL (Data Definition Language) Table Create statement and build
        sqlite3 db table

    Args:
        string: new db table name.

    Returns:
        Status string, '' or 'SUCCESS'.
    """
    retval = ''
    sqlCmd = ''
    try:
        conn = sqlite3.connect(sqlite_file)
        c = conn.cursor()

        if ptbl == 'TBL_MASTER':

            sqlCmd = 'CREATE TABLE IF NOT EXISTS ' + ptbl + ' (ID INTEGER, FILESET TEXT, SSTA TEXT, GRP TEXT, ' \
                                                            'DCT TEXT, ' \
                                                            'DEVCOM TEXT, DEVRTU TEXT, DNPRTU TEXT, AP0 TEXT, ' \
                                                            'SP0 TEXT, AP1 TEXT, SP1 TEXT, AP2 TEXT, SP2 TEXT, ' \
                                                            'AP3 TEXT, SP3 TEXT, AP4 TEXT, SP4 TEXT, AP5 TEXT, ' \
                                                            'SP5 TEXT, AP6 TEXT, SP6 TEXT)'

        else:
            pass

        if sqlCmd != '':
            c.execute(sqlCmd)
            conn.commit()
            conn.close()

        retval = 'SUCCESS'

    except Error as e:

        retval = 'FAIL'
        print(e)

    return retval

推荐阅读