Имена входа Windows Azure Windows не поддерживаются в этой версии SQL Server при подключении к серверу sql с использованием python - PullRequest
0 голосов
/ 21 марта 2019

Привет! Я использую sql server V17.3 на платформе Micorsoft Azure. Я пытаюсь загрузить данные из фрейма данных Python 3.7 в тест таблицы на сервере SQL. Поэтому я написал следующий код

import time
start_time = time.time()
import pyodbc
from sqlalchemy import create_engine
import urllib
dataToUpload=pd.read_csv("intermediate.csv")

params = urllib.parse.quote_plus(r'DRIVER=SQLServer};SERVER=nesbaexplsql001.database.windows.net;DATABASE=mydatabase;Trusted_Connection=False;Encrypt=True;uid=myuid;pwd=my password')
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = create_engine(conn_str)
dataToUpload.to_sql(name='test',con=engine, if_exists='append',index=False)

Но я получаю сообщение об ошибке

DBAPIError: (pyodbc.Error) ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Windows logins are not supported in this version of SQL Server. (40607) (SQLDriverConnect); [HY000] [Microsoft][ODBC SQL Server Driver][SQL Server]Windows logins are not supported in this version of SQL Server. (40607)') (Background on this error at: http://sqlalche.me/e/dbapi)

Во время выполнения to_sql. Я также попытался поставить Trusted_Connection = yes и удалить Encryption = True. Но я получил ту же ошибку. Можете ли вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 21 марта 2019

Пожалуйста, обратитесь к моему примеру кода:

import pyodbc
import csv

server = 'tcp:***.database.windows.net'
database = '***'
username = '***'
password = '***'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

cursor.execute("select * from ***")
row = cursor.fetchone()
while row:
    print(row[0])
    row = cursor.fetchone()

mycsv = r'D:\insert.csv' # SET YOUR FILEPATH

with open (mycsv, 'r') as f:
    reader = csv.reader(f)
    columns = next(reader)
    query = 'insert into <TABLE NAME>({0}) values ({1})'
    query = query.format(','.join(columns), ','.join('?' * len(columns)))
    cursor = cnxn.cursor()
    for data in reader:
        cursor.execute(query, data)
    cursor.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...