使用Python处理输入文件中的SQL查询

时间:2014-10-08 22:20:33

标签: python sql file-io sqlite

更新

我已经实现了一些新代码,现在出现了一个新问题:

query_dir = '/path/to/sql'
sql_commands = []    

with open(inputfile, 'r') as argfile:
    infiles = argfile.readlines()

    for infile in infiles:

        print("infile: {0}".format(infile))

        try:     
            infile = os.path.join(query_dir, infile).replace('\n', '')
            queries = [sqlfile.strip() for sqlfile in open(infile, 'r')]

        except IOError as e:
            print("IOError: {0}".format(e))

        for query in queries:
            sql_commands.append(query)

    print("sql commands: {0}".format(sql_commands))

现在最后,当print语句给出SQL命令时,文件的内容存在,但格式不适合我。例如,它看起来像这样:

sql commands: ['-- comment', '', 'select column1, column2,',
 . . . 'from x p', . . .]

我想让输入文件的一行文件中的SQL查询格式化为由命令运行:

cursor.execute(command)

从下面......

原始问题

我尝试过不同的路径和位置(包括在输入文件中使用绝对路径),我不知道发生了什么。我尝试将所有文​​件与脚本放在同一目录中,这也给出了同样的错误。我不确定如何将SQL文件解释为代码内部的文件...我有一个文件,每行都有一个文件中的SQL查询:

input.file:

query_file1.sql
query_file2.sql
query_file3.sql

我有一个Python脚本,它带有一个SQL查询文件(其中一个)并执行查询并使用pprint和{{1打印它的漂亮版本的输出}}。

我希望能够在文件的每一行放置一个包含SQL查询的文件名,然后使用相同的Python脚本处理该文件。

我很难到达那里。我可以打印文件的行,每行都是带有SQL查询的输入文件:

PrettyPrinter

我不确定如何这样做以便我可以使用此代码段:

. . .

with open(inputfile, 'r') as argfile:
    lines = argfile.readlines()
    for line in lines:
        print(line)

. . .

我需要将输入文件的行转换为参数,以便我可以使用脚本处理它们。

1 个答案:

答案 0 :(得分:1)

I think you need a list named sql_commands.First you get line in file,
then store it in a list.
sql_commands=[]
with open(inputfile, 'r') as argfile:
    lines = argfile.readlines()
    for line in lines:
        with open(line,'r') as sqlfile:
            sqls=sqlfile.readlines()
            for sql in sqls:
                sql_commands.append(sql)