2016-11-12 1 views
0

Привет Я хочу выполнить запрос с помощью sqlcmd, поэтому я вызываю его с помощью subprocess.call(). Этот процесс иногда работает, но в цикле он не работает. Это только выполнение последнего аргумента. Пожалуйста, помогите ниже - пример кода, который я пытаюсь, -Python выполнить sql-запрос с использованием sqlcmd

import subprocess 
host = 'hostname' 
db = 'SQLTest' 
sqlcmd = "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" 
query = "INSERT INTO [dbo].[Test](type,ident,lat,long,y_proj,x_proj,new_seg,display,color,altitude,depth,temp,time,model,filename,ltime) VALUES ('TRACK','ACTIVE LOG','40.79015493','-77.85914183','4627311.94501541','1779470.5827101','False','False','255','351.979858398438','0','0','2008/06/11-14:33:33','eTrex Venture','','2008/06/11 09:33:33')" 
for x in range (0,5): 
    subprocess.call([sqlcmd,'-S' ,host, '-d', db, '-Q', query]) 

Или есть какой-либо другой метод. Я даже попробовал модуль pymysql. Но он показывает ошибку аутентификации.

ответ

0

Это очень творческое решение!

Когда вы говорите «в цикле, это не работает», не могли бы вы рассказать нам, что происходит? Есть ли сообщение об ошибке? Выполняется ли она, но данные не помещаются в таблицу? Можете ли вы заставить это нормально работать за пределами цикла?

Первое, что я замечаю это

sqlcmd = "c:\program files\...." 

Вы можете сделать это сырым строка, положив «г» перед кавычками, например, так:

sqlcmd = r"c:\program files\...." 

Это не позволит Python пытаться интерпретировать обратную косую черту как специальные символы.

Похоже, вы пытаетесь поговорить с SQL Server, поэтому pymysql не поможет (это для общения с сервером MySQL). Я бы предложил искать в pyobbc или pymssql в качестве альтернативы.

0

У меня ошибка. Это было связано с запросом, который я проходил. Запрос читал из текстового файла. Таким образом, в них были пробелы, кроме последнего запроса. и для одиночного тестирования я использовал последний запрос. После исправления это сработало.

 Смежные вопросы

  • Нет связанных вопросов^_^