Я создаю веб-форму для сбора пользовательских данных и сохранения их в нашей базе данных. Создал веб-форму и использовал 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]>
. Как передать всю форму со значениями в столбец базы данных?