如何在python中从file.sql打印tablename和主键
我需要使用下面的程序打印tablename和主键。但它不起作用。你能帮我解决这个问题吗。 我使用了regex模式来查找数据库模式中的表名和主键数据如何在python中从file.sql打印tablename和主键,python,regex,Python,Regex,我需要使用下面的程序打印tablename和主键。但它不起作用。你能帮我解决这个问题吗。 我使用了regex模式来查找数据库模式中的表名和主键数据 class ParseCreateFile: begin = re.compile(r"CREATE \s+ TABLE \s+'((?:[^']|'')*)'.+(PRIMARY \s+ KEY\s? \([^)]*\))", re.IGNORECASE | re.VERBOSE | re.DOTALL) def __init_
class ParseCreateFile:
begin = re.compile(r"CREATE \s+ TABLE \s+'((?:[^']|'')*)'.+(PRIMARY \s+ KEY\s? \([^)]*\))", re.IGNORECASE | re.VERBOSE | re.DOTALL)
def __init__(self,fileName):
self.fileName = fileName
self.readFromFile()
def readFromFile(self):
try:
file = open(self.fileName,'r')
fileData = file.read()
file.close()
self.parse(fileData)
except IOError:
print 'Unable to read file %s' % self.fileName
def parse(self,rawData):
self.list = []
while rawData:
mo = self.begin.search(rawData)
tablename, fil = mo.groups()
print tablename, fil
if mo is None:
break
rawData = rawData[mo.end():]
if __name__ == '__main__':
print "only the main classes"
file = ParseCreateFile('file2.sql')
file2.sql
我编辑了正则表达式,并使用了findall
class ParseCreateFile:
begin = re.compile(r"CREATE TABLE[ ']*([^ ']+)[ ']*[(][^/;]+(PRIMARY KEY.*)[^/;]+;", re.IGNORECASE)
def __init__(self,fileName):
self.fileName = fileName
self.readFromFile()
def readFromFile(self):
try:
file = open(self.fileName,'r')
fileData = file.read()
file.close()
self.parse(fileData)
except IOError:
print 'Unable to read file %s' % self.fileName
def parse(self,rawData):
self.list = []
found = self.begin.findall(rawData)
for i in found:
print i[0], i[1]
if __name__ == '__main__':
print "only the main classes"
file = ParseCreateFile('file2.sql')
可能与简单字符串重复,一切正常。但是当我尝试使用上面的程序处理文件时,同样的方法不起作用,输出显示为“仅主类”。它不起作用。未显示所需的输出。已删除
re.VERBOSE | re.DOTALL
感谢您的回答,如果我有这样的表,请创建表“x”(“x”整数主键(dn));创建表“y”(“X1”整数主键(dn1,dn2));上面的逻辑不起作用。希望到目前为止,这对您拥有的一切都有效,您需要修复正则表达式<代码>重新编译(r“创建表[']*([^']+)[']*[([^/;]+(主键。*?\)[^/;]+”,re.IGNORECASE)
class ParseCreateFile:
begin = re.compile(r"CREATE TABLE[ ']*([^ ']+)[ ']*[(][^/;]+(PRIMARY KEY.*)[^/;]+;", re.IGNORECASE)
def __init__(self,fileName):
self.fileName = fileName
self.readFromFile()
def readFromFile(self):
try:
file = open(self.fileName,'r')
fileData = file.read()
file.close()
self.parse(fileData)
except IOError:
print 'Unable to read file %s' % self.fileName
def parse(self,rawData):
self.list = []
found = self.begin.findall(rawData)
for i in found:
print i[0], i[1]
if __name__ == '__main__':
print "only the main classes"
file = ParseCreateFile('file2.sql')