Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python在同一行sqlite3中插入值_Python_Sqlite - Fatal编程技术网

如何使用python在同一行sqlite3中插入值

如何使用python在同一行sqlite3中插入值,python,sqlite,Python,Sqlite,我有两个函数(在python中)。第一个函数定义了一个新变量,我必须将它插入sql表(第一列)。第二个,做同样的事情,但是我想在第一个变量附近插入它的变量(第二个),所以在第二列,但在同一行。如何使用sql connloc = sqlite3.connect("request.db") sqlloc = "create table requests (" \ " chat_id INTEGER NOT NULL PRIMARY KEY,"\ " locpar varchar(20)," \ "

我有两个函数(在python中)。第一个函数定义了一个新变量,我必须将它插入sql表(第一列)。第二个,做同样的事情,但是我想在第一个变量附近插入它的变量(第二个),所以在第二列,但在同一行。如何使用sql

connloc = sqlite3.connect("request.db")
sqlloc = "create table requests (" \
" chat_id INTEGER NOT NULL PRIMARY KEY,"\
" locpar varchar(20)," \
" stoppar varchar(20)," \
" locdes varchar(20) ," \
" stopdes varchar(20) );"
connloc.execute(sqlloc)

def name_loc(chat, message):
    for i in result:
        if message.text == i:
            item = [i]
            cloc = connloc.cursor()
            cloc.execute("INSERT INTO requests(locpar) VALUES (?);", item)
            connloc.commit()

def name_stop(chat, message):
    for i in result:
     for t in result[i]:
        if message.text == t:
            item = [t]
            cloc = connloc.cursor()
            cloc.execute("INSERT INTO requests(stoppar) VALUES (?);", item)
            connloc.commit()

我将通过定义两种方法将其分为两个步骤,一种用于生成表,另一种用于填充新表,如下所示:

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_EXAMPLE':
            sqlCmd = 'CREATE TABLE IF NOT EXISTS ' + ptbl + ' (FIELD1 TEXT, FIELD2 INTEGER, FIELD3 TEXT, ' \
                                                            'FIELD4 TEXT, FIELD5 TEXT)'
        else:
            pass

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

        retval = 'SUCCESS'

    except Error as e:

        retval = 'FAIL'
        print(e)

    return retval
然后根据需要用值填充它(用您提到的两个特定值插入新行)

现在,我从一个csv文件填充到这里,但我想这会给你这个任务一个非常好的开始

def populate_tbl_file_marker_linenums(p_fml_tbl, p_fml_datafile):
    """ Read csv and load data into TBL_FILE_MARKER_LINENUMS table ...

    Args:
        p_fml_tbl (TEXT) target table name
        p_fml_datafile (TEXT) name of csv file to load into table

    Returns:
        retval (TEXT) - Status of method, e.g., 'SUCCESS'
    """
    retval = ''
    mode = 'r'

    try:
        conn = sqlite3.connect(sqlite_file)
        c = conn.cursor()
        csv_dataset = open(p_fml_datafile, mode)
        csv_reader = csv.reader(csv_dataset)

        c.executemany('INSERT INTO ' + p_fml_tbl + ' (FIELD1, FIELD2, FIELD3, FIELD4, FIELD5) VALUES (?, ?, ?, ?, ?)', csv_reader)

        conn.commit()
        conn.close()
        retval = 'SUCCESS'

    except Error as e:
        print(e)

    return retval