Неверный синтаксис рядом с Go с Pypyodbc - PullRequest
0 голосов
/ 03 января 2019

Я использую библиотеку pypyodbc для установления соединения с базой данных SQL Server 2008 R2, и каждый раз, когда я пытаюсь выполнить файл .sql, я сталкиваюсь со следующей ошибкой:

pypyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'Go'.")

Это SQL-запрос, который я пытаюсь выполнить:

Use SL_Site1_App
Go

select emp_num,name, trans_num, job, trans_type
from Hours where trans_type like '1000%'  order by trans_date desc

Это скрипт Python, который я использую:

import pypyodbc, ExcelFile

def main():
    # read the SQL queries externally
    queries = ['C:\\Temp\\Ready_to_use_queries\\Connection_sql_python.sql']

    for index, query in enumerate(queries):
        cursor = initiate_connection_db()
        results = retrieve_results_query(cursor, query)
        if index == 0:
            ExcelFile.write_to_workbook(results)
            print("The workbook has been created and data has been inserted.\n")

def initiate_connection_db():      
    connection_live_db = pypyodbc.connect(driver="{SQL Server}", server="xxx.xxx.xxx.xxx", uid="my-name",
                                      pwd="try-and-guess", Trusted_Connection="No")
    connection = connection_live_db.cursor()
    return connection

Обходной путь для этой проблемы - удалить строку Use SL_Site1_App Go, но я хочу знать, является ли это известной проблемой, связанной с библиотекой pypyodbc для обработки этих строк, и если да, то куда мне обратиться, чтобы уведомить разработчиков об этом вопрос.

1 Ответ

0 голосов
/ 03 января 2019

GO - это пакетный разделитель, используемый sqlcmd и SSMS.Это не оператор T-SQL.

Учитывая, что вы используете приложение для подключения к SQL Server, объявите свою базу данных в строке подключения, добавив database="SL_Site1_App", а затем удалите USE и GO операторов в вашем операторе SQL.

...