Отправка формы запроса HTML в базу данных одним столбцом - flask sqlalchemy - PullRequest
0 голосов
/ 17 июня 2020

Я создаю веб-форму для сбора пользовательских данных и сохранения их в нашей базе данных. Создал веб-форму и использовал flask для хранения данных в нашей базе данных postgres. Я могу анализировать форму запроса и сохранять значения в отдельных столбцах, вот мой код.

from flask import Flask, render_template, request, redirect, url_for, session, flash
from flask import Markup
import sys,os
from functools import wraps
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.secret_key = os.urandom(24)

USER = os.environ['USER']
PASSWORD = os.environ['PASSWORD']
HOST_NAME = 'servername'
DB_NAME = 'dbname'
DB_SCHEMA = 'dl_schema'
DB_TABLE = 'update_dummytable'

SQLALCHEMY_DATABASE_URI = "postgresql://{username}:{password}@{hostname}:5432/{databasename}".format(
username=USER,
password=PASSWORD,
hostname=HOST_NAME,
databasename=DB_NAME)

app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
db = SQLAlchemy(app)

class FormTable(db.Model):

    __table_args__ = {'schema': DB_SCHEMA , 'implicit_returning': False}
    __tablename__ = DB_TABLE

    cid = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String())
    last_name = db.Column(db.String())
    user_email = db.Column(db.String())
    policy_number = db.Column(db.String())
    formvalue = db.Column(db.String())
    form = db.Column(db.Text())

@app.route('/formupdate', methods=['GET', 'POST'])
def transactions():
    if request.method == 'GET':
        return render_template('index.html')
    updaterequest = FormTable(first_name=request.form["first_name"], 
last_name=request.form["last_name"], \
    user_email=request.form["user_email"], policy_number=request.form["policy_number"], \
    formvalue=request.form["formvalue"], form= request)
    db.session.add(updaterequest)
    db.session.commit()
    return render_template('index.html')

@app.route("/")
def home():
  return "Form Update App"

if __name__ == "__main__":
  app.run(debug=True)

Приведенный выше код работает нормально, но я также пытаюсь сохранить всю форму запроса с предоставленными пользователем значениями как html в одном из моих столбцов в базе данных postgres, я создал столбец в моей таблице с именем «форма» как текстовый тип данных. Но как мне сохранить все html со значениями в этом столбце? Когда я передаю «request.form», он передает словарь со значениями ключей, но не форму html. Кроме того, когда я пытался передать «запрос» в этот столбец, он выдает эту ошибку. sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'LocalProxy' Я вижу, что запрос вставки имеет 'form': <Request 'http://127.0.0.1:5000/formupdate' [POST]>. Как передать всю форму со значениями в столбец базы данных?

...