#sql-server #flask #get
#sql-сервер #flask #получить
Вопрос:
Недавно я начал изучать Flask. Я пытаюсь подключиться к своей локальной базе данных SQL Server и отобразить таблицу. Я не уверен, правильно ли я ввожу строку подключения.
Я не уверен, какой пароль для сервера. Подключался с помощью аутентификации Windows в SQL Server Management Studio. Нужно ли мне это со строкой подключения к локальной базе данных?
Я не уверен, что делать, чтобы это заработало. Я работал над этим часами, и у меня ничего не получается. pyodbc.connect подключен в PyCharm, но не в браузере. Что бы я ни пытался, я получаю сообщение об ошибке «Сервер столкнулся с внутренней ошибкой и не смог выполнить ваш запрос. Либо сервер перегружен, либо в приложении ошибка.»
from flask import Flask, g, render_template, abort, request
import json
import pypyodbc as pyodbc
##cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
## "Server=LAPTOP-16DOMG6SMSSQLSERVER3;"
## "Database=ImportTest;"
## "Trusted_Connection=yes;")
CONNECTION_STRING = 'Driver={ODBC Driver 17 for SQL Server};Server=LAPTOP->16DOMG6SMSSQLSERVER3;'
'Database=ImportTest;'
'Uid = LAPTOP-16DOMG6Sdmc03'
'Trusted_Connection=yes;'
app = Flask(__name__)
app.config.from_object(__name__)
##Displays the database table in pycharm with pyodbc.connect
##for row in cursor:
## print('row = %r' % (row,))
@app.before_request
def before_request():
try:
g.sql_conn = pyodbc.connect(CONNECTION_STRING, autocommit=True)
except Exception:
abort(500, "No database connection could be established.")
@app.teardown_request
def teardown_request(exception):
try:
g.sql_conn.close()
except AttributeError:
pass
##Landing Page. Connection Working?
@app.route('/', methods=['GET'])
def hello():
return 'This will display article information '
##Display All Articles in Database
@app.route('/articles', methods=['GET'])
def allArticle():
curs = g.sql_conn.cursor()
query = 'select * from ImportTest.dbo.gwTable2 '
curs.execute(query)
columns = [column[0] for column in curs.description]
data = []
for row in curs.fetchall():
data.append(dict(zip(columns, row)))
return json.dumps(data, indent=4, sort_keys=True, default=str)
if __name__ == '__main__':
app.run()
Любая помощь была бы оценена,
Спасибо!
Комментарии:
1. Не могли бы вы добавить точную ошибку, которую вы получаете из консоли Python? Мы не можем помочь в противном случае
Ответ №1:
Я замечаю, что в комментарии над CONNECTION_STRING
переменной у вас есть сервер как существующий LAPTOP-16DOMG6SMSSQLSERVER3
, но в переменной есть дополнительное >
значение:
# Original
LAPTOP-16DOMG6SMSSQLSERVER3
# Variable
LAPTOP->16DOMG6SMSSQLSERVER3
^
| Notice the right arrow