#sql-server #flask #flask-sqlalchemy
#sql-сервер #flask #flask-sqlalchemy
Вопрос:
Я создаю проект flask для внутреннего использования в моей компании. Я начинаю с использования flask и postgre и использую sqlalchemy и настраиваю это соединение, используя форматы модели, как показано ниже:
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
и это сработало хорошо. Теперь по соображениям безопасности мы переключаемся на использование Microsoft SQL Server с проверкой подлинности windows на сервере IIS, но у меня возникают большие проблемы с подключением.
Я изменил URI базы данных на
SQLALCHEMY_DATABASE_URI = "mssql pyodbc://server/database"
Я проверил конфигурацию SQL Sever и я почти уверен, что это правильно. Однако я получаю сообщение об ошибке
psycopg2.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Я исследовал эту проблему и использовал решение pool_pre_ping, но получаю ту же ошибку (показано ниже)
SQLALCHEMY_ENGINE_OPTIONS = {"pool_pre_ping": True}
Я видел много ответов на этот вопрос, в которых используется материал sqlalchemy.engine, но, если возможно, я надеялся использовать все db.models, которые я уже написал, но если это невозможно, я могу переписать некоторые материалы. Приветствуется любая помощь.
Ответ №1:
Проверка подлинности Windows станет проблемой при развертывании в рабочей среде. Я рекомендую создать пользователя SQL для подключения к вашей базе данных.
Попробуйте эту строку подключения:
mssql pyodbc://<UID>:<PWD>@<SERVER>/<DATABASE>?driver=ODBC Driver 17 for SQL Server;Trusted_Connection=no
Также убедитесь, что вы установили pyodbc
документы msft
pip install pyodbc
Комментарии:
1. Спасибо за ответ. я попробовал указанную выше строку подключения и теперь получаю сообщение «не удалось подключиться к серверу: соединение отклонено (0x0000274D / 10061)», есть какие-либо мысли? Кроме того, не могли бы вы объяснить, что вы имеете в виду при создании пользователя sql для подключения к БД.
2. Пользователи авторизации WIndows пользователь в вашем домене, например, ‘Domain User’, пользователь SQL создается на сервере SQL см. .
3. Если вы хотите использовать аутентификацию Windows, удалите
UID
иPWD
из строки подключения и изменитеtrusted_connection=no
наTrusted_connection=yes
.4. К сожалению, я получаю ту же ошибку при попытке использовать Windows auth
5. Пока игнорируйте Flask и SQLAlchemy. Можете ли вы подключиться к своей базе данных с помощью
pyodbc
?. Следуйте примеру от Microsoft . Как только вы определили правильную строку подключения, используйте ее в своем приложении.