我有一个请求输入的脚本,然后将该输入插入到表中。 下一次运行脚本时,我想让它告诉用户上一次输入的I d是什么。
表如下:id INTEGER主键自动递增、用户id文本、域文本、密码文本、web服务器文本、sqlserver文本
我被告知可以使用SELECT seq from SQLITE_SEQUENCE WHERE name='table_name',但它会生成以下文本:而不是最后一行的id。
请注意,我是一个非常新的Python/SQLite3编码器!
作为参考,sofar代码如下所示:
#!/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 ##########
尝试使用
sqlite3_last_insert_rowid()
SQL语句
SELECT max(id) FROM table_name
应该给您最大的id。如果您是自动递增的,那么这将与上次插入的相同。编辑:要获取python中的实际值,意味着从光标读取它:
fetchone()
以元组的形式返回select语句中的第一行(除非使用行工厂),因此在这种情况下,fetchone()[0]
将返回第一行(且仅)中的第一列,即最大(id)。有关详细信息,请参见http://docs.python.org/2/library/sqlite3.html。
相关问题 更多 >
编程相关推荐