Проблемы подключения к базе данных Sybase в качестве вторичной базы данных с Django
Я могу подключиться к базе данных sybase с помощью FreeTDS и pyodbc следующим образом:
# hello_sybase.py
import pyodbc
try:
con = pyodbc.connect('Driver={FreeTDS};'
'Server=10.60.1.6,2638;'
'Database=blabla;'
'uid=blabla;pwd=blabla')
cur = con.cursor()
cur.execute("Select * from Test")
for row in cur.fetchall():
print (row)
cur.close()
con.close()
except Exception as e:
print(str(e))
Я попытался подключиться в представлении django следующим образом:
import pyodbc
CONN_STRING = 'Driver={FreeTDS};Server=10.60.1.6,2638;Database=blabla;uid=blabla;pwd=blabla'
def my_view(request):
with pyodbc.connect(CONN_STRING) as conn:
cur = conn.cursor()
cur.execute('SELECT * FROM test')
rows = list(cur.fetchall())
return render(request, 'my_template.html', {'rows': rows})
Когда я запускаю python manage.py runserver и выполняю код в приведенном выше представлении.
У меня такое сообщение об ошибке
'08001', '[08001] [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
Я попытался поставить TDS_Version=7.4 как было указано здесь в комментарии, но это не помогло.
Возможно ли, что это проблемы с резьбой, как сказано в этом комментарии?
Как я могу это исправить? Код работает без django, но с python manage.py runserver он не работает.
Чтобы быть более точным, я использую этот фрагмент кода в представлении
if second_form.is_valid():
try:
con = pyodbc.connect(CONN_STRING)
con.setdecoding(pyodbc.SQL_CHAR, encoding='cp1252')
con.setdecoding(pyodbc.SQL_WCHAR, encoding='cp1252')
con.setencoding(encoding='cp1252')
cur = con.cursor()
cur.execute("Select * from test")
result2 = list(cur.fetchall())
print(results2)
cur.close()
con.close()
context['result2'] = result2
context['form2'] = SecondForm(request.POST)
except Exception as e:
print (str(e))