ul.main_nav li:hover ul.sub-menu {
display: block;
position: absolute;
padding: 0px;
margin-left: -20px;
top:0;
left:0;
width:800px;
}
由于某种原因,在我的if语句中,我的标题变量在被调用时仍会返回空,如果不是行:
如果列中不存在变量剂量,我试图插入变量。
答案 0 :(得分:0)
如果没有返回任何行,那么可能是因为表中没有包含请求的firstname
的数据。尝试在代码中添加一些调试并使用参数化查询而不是字符串连接:
cursor.execute("SELECT id FROM myguests WHERE firstname = %s", (title,))
row = cursor.fetchall()
print 'Got row: {!r}'.format(row) # some debugging
if row:
print "Record for {} already exists".format(title)
else:
print "List is empty, attempting to insert"
cursor.execute(title_query, (title,))
但这种方法存在潜在的竞争条件;如果某个其他进程在初始检查和后续插入之间将值添加到数据库,该怎么办?根据您的应用,这可能是也可能不是问题。
关于“如果不存在则插入”,一种方法是在firstname
列上设置UNIQUE INDEX。然后只是尝试插入新行而不先检查。如果存在具有firstname
相同值的行,则插入将失败。如果不存在这样的行,则将尝试插入(它可能仍然失败,但出于其他原因)。您的代码需要处理因重复键而导致的插入失败。
或者您可以调查使用INSERT IGNORE into myguests ...
或此处讨论的其他一些选项:How to 'insert if not exists' in MySQL?。
但你确定firstname
应该是唯一的吗?在我看来,许多客人可能拥有相同的名字。