#python #sqlalchemy #sybase #sqlalchemy-sybase
#python #sqlalchemy #sybase #sqlalchemy-sybase
Вопрос:
Я пытаюсь подключить базу данных Sybase к flask SQLAlchemy, используя ODBC-соединение.
Моя строка подключения: ‘SQLALCHEMY_DATABASE_URI’ = «sybase pyodbc://username:passw@rd@host:port/dbname?driver=Adaptive Сервер Предприятие»
Но я почти уверен, что использую правильный порт в строке подключения. Но когда я пытаюсь подключиться к тому же экземпляру, используя этот метод.
Второй метод :
con = pyodbc.connect(server=server ,port=port ,username=username ,password=password ,driver=driver)
Теперь соединение работает отлично с теми же данными о соединении.
Может ли кто-нибудь помочь мне в создании URL-адреса строки подключения и помочь мне исправить это. Потому что я хочу использовать «Объект БД» вместо «Объекта курсора».
Ответ №1:
Как указано на вики-странице Getting Connected, «Соединения с именем хоста» не поддерживаются. Вы можете либо создать DSN ODBC, либо использовать строку подключения pyodbc с прямым сквозным подключением ODBC:
import urllib
from sqlalchemy import create_engine
connection_string = (
'DRIVER=SAP ASE ODBC driver;'
'SERVER=centos7-vm01;'
'PORT=5000;'
'UID=scott;PWD=tiger;'
'DATABASE=mydatabase;'
'charset=utf8;'
)
connection_uri = f"sybase pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
engine = create_engine(connection_uri)
Комментарии:
1. Огромное спасибо за быстрый ответ. Я нашел подходящую для меня. Опубликуйте это здесь . Приветствия !!
Ответ №2:
После стольких исследований я обнаружил, что эта ошибка вызвана неправильным параметром в строке подключения.
Ошибка с недопустимым номером порта также будет исправлена с помощью этого блока кода .
Код здесь :
import urllib
connection_string = (
'DRIVER=Adaptive Server Enterprise;'
'SERVER=server;'
'PORT=port;'
'UID=username;PWD=password;'
'DATABASE=dbname;'
)
connection_uri = f"sybase pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
SQLALCHEMY_DATABASE_URI = connection_uri # connection string for SQLALchemy
Этот код является лучшим решением.