У меня есть скрипт python, который я создал и разработал .exe с помощью Pyinstaller, который использует библиотеку pyodbc
python для запроса и выглядит как поддельный код ниже. На моем компе работает отлично. Я попытался поделиться своим .exe с парой коллег, которые, как я дважды проверил, имеют доступ для запросов к нашим базам данных в Excel после предоставления им данных для входа. Однако они не могут получить доступ к нашей базе данных из моего python.exe.
После одного тестирования я знаю, что они не могут получить доступ, потому что .exe, который я создал, выдал ошибку (No suitable driver found. Cannot connect.)
, как вы можете видеть в коде ниже, потому что он не смог найти ODBC Driver 17 for SQL Server
на компьютере коллеги. Я считаю, что Excel использует PowerQuery, поэтому он не зависит от драйвера ODBC, но для python потребуется драйвер. У меня такой вопрос: должна ли работать простая установка ODBC Driver 17 for SQL Server
по этой ссылке? https://www.microsoft.com/en-us/download/details.aspx?id=56567
У пользователя нет прав администратора для загрузки драйвера (и я не могу проверить это сам на другом компьютере), и у меня ограничено время и доступ к ИТ-ресурсам; в противном случае я бы сам устранял неполадки с пользователем, поэтому мне не терпится услышать, есть ли у кого-нибудь какой-либо опыт в этом или нашел ли он подобный пост/документацию, которая могла бы быть мне полезна. Опять же, код ниже для справки, но мне не нужна помощь с этим. Мне нужно объяснить ИТ, что мне нужно, чтобы они сделали для пользователей, поэтому мне было интересно, будет ли достаточно Microsoft® ODBC Driver 17 for SQL Server® - Windows
.
import pandas as pd
import pyodbc
#Connection and credentials
driver_name = ''
driver_names = [x for x in pyodbc.drivers() if x.endswith(' for SQL Server')]
driver_names
if driver_names:
driver_name = driver_names[-1]
if driver_name:
conn_str = f'''DRIVER={driver_name};SERVER='''
else:
print('(No suitable driver found. Cannot connect.)')
server = '111.111.11.111'
database = 'database'
username = 'username'
password = 'password'
cnxn = pyodbc.connect(conn_str+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
try:
account_id_input = input("Select Account ID: ").strip()
print("Confirming Account ID...")
#SQL Query
df = pd.read_sql_query("""
Select [Account ID], [Year-Month], [Revenue] from database.dbo.tblaccount
""",
cnxn, params=[account_id_input]
)
print("CONFIRMED")
else: print("Incorrect ID or database connection error")
df.to_csv(f'{account_id_input}_data.csv', index=False)