是什么导致NOT EQUAL and IN组合查询在MySQL中工作正常,而在Python中忽略了第一个条件?

是什么导致NOT EQUAL and IN组合查询在MySQL中工作正常,而在Python中忽略了第一个条件?,python,mysql,sql,ubuntu-12.04,Python,Mysql,Sql,Ubuntu 12.04,我正在编写一个Python脚本来在MySQL表上运行查询。高水位流量如下所示: mywebsite.com/blog 1 0 mywebsite.com/help 2 0 创建数据库 创建表 在表中插入条目 根据某些条件查询表以获取插入项的主键 例如,我将把这些数据插入表中: page_URL page_type> mywebsite.com/blog 0 mywebsite.com/help 0 notmywebsite.co

我正在编写一个Python脚本来在MySQL表上运行查询。高水位流量如下所示:

mywebsite.com/blog   1   0
mywebsite.com/help   2   0
创建数据库 创建表 在表中插入条目 根据某些条件查询表以获取插入项的主键 例如,我将把这些数据插入表中:

page_URL               page_type>
mywebsite.com/blog     0
mywebsite.com/help     0
notmywebsite.com       98
然后我运行以下查询:

SELECT 
    page_URL, pageID, page_type 
FROM dim_all_pages 
WHERE 
    page_type != 98 
    AND page_URL IN ('mywebsite.com/blog', 'notmywebsite.com', 'mywebsite.com/help')
正如预期的那样,我得到的结果如下:

mywebsite.com/blog   1   0
mywebsite.com/help   2   0
但是,当我通过Python运行查询时,我得到以下结果:

mywebsite.com/blog   1   0
mywebsite.com/help   2   0
notmywebsite.com     3   98
这毫无意义!下面是我的代码的样子:

query = ["INSERT INTO dim_all_pages (page_URL, page_type) VALUES ( "]
query.append("SELECT page_URL, pageID, page_type FROM dim_all_pages WHERE page_type != 98 AND page_URL IN ( ")

for index, item in enumerate(page_list):
    query[0] = query[0] + "'" + item + "' , " + page_type(item) + " )"
    query[1] = query[1] + "'" + item + "'"
    if index + 1 < len(page_list):
        query[0] += ' , ( '
        query[1] += ' , '

query[1] += ' )'

try:

    # Insert pages
    con = get_con(loc,user,pw)
    cur = con.cursor()
    cur.execute(query[0])

    # Create PSP
    cur.execute(query[1])
    psp = cur.fetchall()

    # Commit queries
    con.commit()

except mdb.Error, e:

    print "Error %d: %s" % (e.args[0],e.args[1])
    sys.exit(1)

知道我做错了什么吗?这正在扰乱我的头脑

我还将Python生成的查询复制粘贴到MySQL中并运行了它,效果很好!您能在try语句开始之前显示printquery的输出吗?您将查询构建为一个字符串,而不使用SQL参数,这始终是一项危险的工作。也许您没有构建您认为正在构建的查询?输出与我发布的查询相同。我将printquery[1]的输出复制粘贴到MySQL中并运行它,它工作得很好。这一定是我在Python中做错的事情。我还将研究SQLAlchemy,看看是否可以找到更好的方法来实现这一点。除了SQL参数外,还需要研究str.join方法来使用分隔符构建字符串。