从python向sqlite3数据库插入一行

时间:2017-10-12 19:17:25

标签: python sqlite

我刚才使用sqlite3和python。我在数据库类中创建insert_row函数时遇到问题。从执行功能的手册中可以看出,我正确地完成了所有事情https://docs.python.org/2/library/sqlite3.html。此函数确实返回一个看起来对lastrowid正确的数字。但是,当我通过命令行访问sqlite3时,表是空的。

def insert_row(self, table, input_dict):
    '''
        (str, dict) -> int
        Add a row to a table in the database
    '''

    count = 0
    col_names = input_dict.keys()
    insert_sql = 'INSERT INTO ' + self.sanitize(table) + ' (' + utils.list_to_char_seperated(col_names, ', ', False) + ') VALUES (' 

    for col in col_names:
        count += 1
        insert_sql += "'" + self.sanitize(input_dict[col]) + "'"

        if count < len(col_names):
            insert_sql += ', '
        else:
            insert_sql += ');'

    cur = self.conn.cursor()

    cur.execute(insert_sql)

    return cur.lastrowid

通过命令行访问。

    $ sqlite3
    SQLite version 3.11.0 2016-02-15 17:29:24
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .open blood_cultures.db 
    sqlite> .tables
    vein_draws
    sqlite> SELECT * FROM vein_draws;
    sqlite>

此外,如果我获取insert_sql变量的结果并通过命令行连接将其直接插入数据库,则此方法有效。所以我不相信这是我的插入声明。

关于我在这里做错了什么想法?

0 个答案:

没有答案