使用通配符比较python中的2个列表

时间:2014-10-18 00:54:22

标签: python mysql

我正在使用pymysql来拉取数据库表结果如下所述,一个表有一个非fqdn列表,另一个fqdn。基本上我想验证天气是否存在整个fqdn表中存在的部分 - 如果是,则进行数据库插入。任何帮助,将不胜感激。见下文:

#!/usr/bin/python                                                               
'''Produce list of machines that are postivie matches for rhn and vmware member\
ship'''

import os
import pymysql
import glob

conn = pymysql.connect(host='10.0.0.101', port=3306, user='root', passwd='', db\
='hosts')

cur = conn.cursor()
cur.execute("SELECT hostname from rhnreg")
rhnreg = []
for r in cur.fetchall():
    rhnreg.append(r)

cur.close
cur = conn.cursor()
cur.execute("SELECT hostname from metalreg")

mreg = []
for r in cur.fetchall():
    mreg.append(r)

cur.close
conn.close

1 个答案:

答案 0 :(得分:0)

MySQL默认支持字符串模式匹配和查询,因此应该是您使用的内容(有关这些内容的详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.htmlhttp://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

这会产生类似

的结果
SELECT hostname FROM fullyqualifiedhostnames where hostname LIKE "%non-qualified-hostname%";

除此之外,确保你实际上调用了close函数(在上面的例子中你只是"引用"实际的函数' s,而不是调用它们.Python有严格的调用parens(例如cur.close()conn.close()

如果您想在-python中执行此操作,则最有可能使用正则表达式(https://docs.python.org/2/library/re.html)。另一个可能的选择是,只使用fnmatch内置库,它将为您提供类似UNIX的文件通配符,这些通配符可能足以满足您的用例(https://docs.python.org/2/library/fnmatch.html