UPDATE過程SQL查詢中輸入文件與Python
我已經實現了一些新的代碼,現在有一個新的問題:
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。文件:
query_file1.sql
query_file2.sql
query_file3.sql
我有一個Python腳本,需要一個文件(其中之一),在它的SQL查詢和執行查詢並打印它的漂亮版本的輸出,它使用pprint
和PrettyPrinter
。
我希望能夠在文件的每一行中放置一個文件名,該文件名中包含SQL查詢,然後使用相同的Python腳本處理該文件。
我遇到了麻煩。我可以打印文件的行,每一行的是SQL查詢語句的輸入文件:
. . .
with open(inputfile, 'r') as argfile:
lines = argfile.readlines()
for line in lines:
print(line)
. . .
我不知道如何去這樣做,這樣我可以用這個片斷:
. . .
for command in sql_commands:
try:
pp = pprint.PrettyPrinter(indent=4)
cursor.execute(command)
pp.pprint(cursor.fetchall())
. . .
我需要將輸入文件的行轉換爲參數,以便我可以使用腳本處理它們。
謝謝。我試過這個,並導致SQL語法錯誤。看起來文件的標題是命令而不是文件的內容(這是實際的查詢)。我會繼續調整... – nicorellius 2014-10-08 23:00:04
@nicorellius你的意思是query_file1.sql實際上是一個帶有sqlcommands的文件嗎? – AlexWei 2014-10-08 23:09:24
@nicorellius如果我的假設是正確的。你應該打開(line,'r')然後做同樣的事情 – AlexWei 2014-10-08 23:15:12