【发布时间】:2015-03-24 05:38:53
【问题描述】:
我为每个表编写了两个函数来接收字段的命令。我的队友需要我将两个功能重新组合为一个。最后我做了这个功能,但它无法接收我的 router table 的命令。 这是我的两个功能:
# def readrouter(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
#
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
# def readswitch(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
这是我将两个功能合二为一后的功能:
def readciscodevice(x):
conn = sqlite3.connect('server.db')
cur = conn.cursor()
if x:
cur.execute(
"SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read
else:
cur.execute(
"SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read;
a = raw_input("x:")
for result in readciscodevice(a):
print(result[0])
我使用我的 if 语句,它可以读取我的 switch table 的命令,但无法从 switch table 获取命令。我是否需要编写布尔值或其他内容以确保它可以访问我的路由器表?
更新(我首先尝试选择两个命令,即 enable 和 conf t,然后我将识别我的输入,如果输入与我的 switch 的字段“function”匹配,它会提供一些命令,ELSE将匹配我的路由器的字段“功能”):
# def readciscodevice(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
#
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function='configure terminal' or function='enable' ORDER BY key ASC"
# )
#
# if x:
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read
# else:
# cur.execute(
# "SELECT DISTINCT command FROM router WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read;
#
#
# a = raw_input("x:")
# for result in readciscodevice(a):
# print(result[0])
在更新代码中: 它无法选择启用配置命令 也无法到达我的路由器字段以获取命令.. 但它可以选择切换命令
【问题讨论】:
-
a = raw_input("x:")中的示例输入是什么? -
@Marcin 我将输入我的函数'no rip'然后它输出启用,配置终端,没有网络(网络地址),没有路由器 rip
-
你的条件`if x:`意味着你只检查非假变量。字符串
no rip不为空,并且您的 else 永远不会执行。很难理解你想在x的条件下如何使用a。 -
@Marcin 很抱歉我在 x 中犯的错误。老实说,我真的不明白如何使用 if x:.Is 这个问题可能存在于 select switch table 的语句中,因为我必须在我的第一个 select 语句中绘制两个命令。我已经更新了我的代码,但没有工作,但希望你知道我想做什么!
-
@Marcin 因为我的队友有我的 Excel 表。我不认为他会在 raw_input 中输入假变量,所以我没有尝试在我的 if 语句中创建空值,我应该为我的语句中的空值或错误错误做更多的事情吗?但是我们只想输出命令,而不是像“你输入的是空的!”这样的东西。或“您的输入有误!”
标签: python if-statement sqlite boolean