gpt4 book ai didi

python - 无法从 SQLITE3 数据库中获取最后一行 ID

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:09 27 4
gpt4 key购买 nike

我有一个请求输入的脚本,然后将该输入插入到一个表中。下次运行脚本时,我希望它告诉用户最后输入的 ID 是什么。

表格如下:id INTEGER PRIMARY KEY AUTOINCREMENT,userid TEXT,domain TEXT,password TEXT,webserver TEXT,sqlserver TEXT

有人告诉我可以使用 SELECT seq from SQLITE_SEQUENCE WHERE name='table_name' 但它会产生以下文本:而不是最后一行的 id。

请注意,我是一个非常新的 Python/SQLite3 编码器!

供您引用,到目前为止的代码如下所示:

#!/usr/bin/python
import os, sys, sqlite3
######## CHECK SYSTEM COMPATIBILITY ########
if os.name =='posix':
os.system("clear")#CLEAR SCREEN#
pass
else:
sys.exit("Operating System is not supported")
######## END CHECK SYSTEM COMPATIBILITY ########
######## CHECK IF SCRIPT IS RUN AS ROOT ########
#if os.geteuid() != 0:
# sys.exit("Script must be run as root")
#else:
# pass
####### END CHECK IF SCRIPT IS RUN AS ROOT ########
####### CREATE DATABASE AND CHECK IF TABLE EXISTS ##########
conn = sqlite3.connect("dat.db")
c = conn.cursor()
c.execute ('''CREATE TABLE IF NOT EXISTS kunder
(id INTEGER PRIMARY KEY AUTOINCREMENT, userid TEXT, domain TEXT, password TEXT, webserver TEXT, sqlserver TEXT)''')
conn.commit()
print c.execute ("SELECT seq from SQLITE_SEQUENCE WHERE name='kunder'")
conn.close()
######## DONE CREATE DATABASE AND CHECK IF TABLE EXISTS #########
###### ASK FOR INPUT ##########
########### HERE NEEDS TO BE A CHECK TO DETERMINE THE LATEST USERID - ALSO NEEDS TO BE FOR WEBSERVER AND PASSWORD #################
userid = raw_input("Enter userid: ")
########### HERE NEEDS TO BE A CHECK TO SEE IF USERID EXISTS!!!!!#####################
domain = raw_input("Enter domain: ")
password = raw_input("Enter password: ")
########### NEEDS TO BE A WAY TO AUTOGENERATE A PASSWORD!!! ####################
webserver = raw_input("Enter webserver: ")
sqlserver = raw_input("Enter sqlserver: ")
###### FINISHED ASK FOR INPUT #######
######## DATABASE ###########
conn = sqlite3.connect("dat.db")
c = conn.cursor()
c.execute ("INSERT INTO kunder (userid, domain, password, webserver, sqlserver) VALUES (?,?,?,?,?)", (userid, domain, password, webserver, sqlserver))
conn.commit()
conn.close()
####### DONE WITH DATABASE ##########

最佳答案

SQL 语句 SELECT max(id) FROM table_name 应该给你最大的 id。如果您要自动递增,那么这将与上次插入的相同。

编辑:要在 python 中获取实际值意味着从光标读取它:

cursor = sqlite3.execute('SELECT max(id) FROM table_name')
max_id = cursor.fetchone()[0]

fetchone() 将 select 语句的第一行作为元组返回(除非使用了 row_factory),因此 fetchone()[0] 将在此情况下,返回第一(也是唯一)行中的第一(也是唯一)列,即 max(id)。

参见 http://docs.python.org/2/library/sqlite3.html了解更多信息。

关于python - 无法从 SQLITE3 数据库中获取最后一行 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com