Как подключить веб-форму к SQL Серверу в Python? - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь передать данные в базу данных, используя Flask in python:

Мой код app.py ниже:

from flask import Flask, render_template, request, url_for, redirect
import pyodbc
from flask_sqlalchemy import SQLAlchemy
from urllib import parse

app = Flask(__name__)

params = parse.quote_plus("DRIVER={ODBC Driver 13 for SQL Server};SERVER=;DATABASE=;UID=;PWD=;")
engine = SQLAlchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
print(engine)    

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == "POST":
        AddressID = request.form['AddressID']
        EntityID = request.form['LegalEntityID']
        connection = engine.connect()
        connection.execute("insert into [Repp_Address](AddressId,LegalEntityID) VALUES ('%s','%s')", 
        AddressID,EntityID))
        connection.close()
        return 'success'
    return render_template('index.html')


if __name__ == '__main__':
    app.run()

Я получаю следующую ошибку:

engine = SQLAlchemy.create_engine ("mssql + pyodb c: ///? Odbc_connect =% s"% params) TypeError: create_engine () отсутствует 2 обязательных позиционных аргумента: 'sa_url' и 'engine_opts'

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 27 марта 2020

Похоже, вам все еще нужно создать экземпляр вашего класса SQLAlchemy. (В настоящее время SQLAlchemy ничего не знает о вашем приложении и не имеет конфигурации)

вы можете сделать это после создания приложения.

app = Flask(__name__)
db = SQLAlchemy(app)

Следующая проблема заключается в том, что метод create_engine по-прежнему ожидает 2 позиционных аргументы, как показано в вашей трассировке.

Чтобы получить параметры движка, добавьте следующее "db =":

engine_options = app.config['SQLALCHEMY_ENGINE_OPTIONS']

Теперь вы сможете создать движок следующим образом:

url = "mssql+pyodbc:///?odbc_connect=%s" % params
engine = db.create_engine(url, engine_options)

Возможно, вы привыкли к vanila SQLAlchemy, но расширение Flask работает немного по-другому. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...