我正在尝试将一行(用户提交的帖子)添加到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)
);
答案 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