我必须连接到 Oracle 数据库并查看表是否存在。虽然我可以获得表格列表,但我无法查看我要查找的表格是否在列表中。有些表有我必须加入的关联表,有些没有,因此我必须检查。
我的列表中有什么:('NYSDOH_CI_EI_HOSPITAL',)
sql = "SELECT table_name FROM all_tables"
cur.execute(sql)
searchstr = 'NYSDOH_CI_EI_HOSPITAL'
p = re.compile(searchstr)
#create data array to load in SQL results in.
ciDataSet = []
cxRows = cur.fetchall()
for i in cxRows:
#print i # list of tables
if p.match(str(i)):
print i
它找不到它,即使我使用通配符也是如此。
请您参考如下方法:
fetchall() 返回一个元组列表。 所以当你这样做的时候
for i in cxRows:
'i' 是元组类型。在您的情况下,此元组将只有一个值。您可以使用 i[0] 访问它并将其与 p 匹配。 当前您正在将元组转换为字符串,因此正则表达式将不匹配。
更正后的代码:
sql = "SELECT table_name FROM all_tables"
cur.execute(sql)
searchstr = 'NYSDOH_CI_EI_HOSPITAL'
p = re.compile(searchstr)
#create data array to load in SQL results in.
ciDataSet = []
cxRows = cur.fetchall()
for i in cxRows:
#print i # list of tables
if p.match(str(i[0])):
print i
