将行插入SQLite表

时间:2015-05-06 08:32:02

标签: python sqlite python-3.4

我正在尝试将一行(用户提交的帖子)添加到SQLite表(帖子)中。 我需要添加时间戳为当前时间和日期的新帖子,然后我需要返回此新帖子的ID。

我的代码到目前为止(不完整,因为我不知道如何返回id,如果我插入正确的信息):

def post_add(conn, username, message):

    cursor = conn.cursor()
    cursor.execute("INSERT INTO posts (timestamp, username, message) VALUES (CURRENT_TIMESTAMP,?,?)"
                   , (username, message))
    db.commit()

表格:

CREATE TABLE posts (
            id integer unique primary key autoincrement,
            timestamp text default CURRENT_TIMESTAMP,
            username text,
            message text,
            FOREIGN KEY(username) REFERENCES users(name)
);

2 个答案:

答案 0 :(得分:3)

游标对象在其lastrowid属性中具有最后一个插入ID。

cursor.execute('INSERT ...')
new_id = cursor.lastrowid
db.commit()
return new_id

答案 1 :(得分:1)

您可以使用以下内容:

def post_add(db, usernick, message):
    cursor = db.cursor()
    cursor.execute("INSERT INTO posts (usernick, content) VALUES (?,?)"
               ,(usernick, message))
    inserted_id = cursor.lastrowid
    db.commit()
    return inserted_id

至于文本大小限制,我不知道在sqlite中执行此操作的方法,但您可以在python中检查它,例如在函数开头添加这两行:

if len(message) > MAX_ALLOWED_LENGTH:
    return None