![](/img/trans.png)
[英]How to inserting data into interrelated relationship tables using SQLAlchemy (not flask_sqlalchemy or flask-merge)?
[英]Why am I getting this error inserting simple data using flask_sqlalchemy using SQL Server?
SQLAlchemy 版本:2.0.1
Flask-SQLAlchemy 版本:3.0.3
我正在尝试使用 flask_alchemy package 将联系人 forms 从我的 python flask web 应用程序插入到我的 SQL 服务器数据库中,但出现以下错误:
sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY104', '[HY104] [Microsoft][ODBC SQL Server Driver]Invalid precision value (0) (SQLBindParameter)')
[SQL: INSERT INTO [ContactForms] (first_name, last_name, email, phone, msg) OUTPUT inserted.id VALUES (?, ?, ?, ?, ?)]
[parameters: ('John', 'Doe', 'johndoe@email.com', '555-555-5555', "Hello, I'd like to inquire about your services.")]
(Background on this error at: https://sqlalche.me/e/20/dbapi)
我的Model:
class ContactFormsTable(db.Model):
__tablename__ = "ContactForms"
id = db.Column("id", db.Integer, primary_key=True)
first_name = db.Column (db.VARCHAR(25), nullable=False)
last_name = db.Column (db.VARCHAR(25), nullable=False)
email = db.Column (db.VARCHAR(75), nullable=False)
phone = db.Column (db.CHAR(12), default=None, nullable=True)
msg = db.Column (db.TEXT, nullable=False)
我的插入语句:
new_contact_form = ContactFormsTable(
first_name="John",
last_name="Doe",
email="johndoe@email.com",
phone="555-555-5555",
msg="Hello, I'd like to inquire about your services."
)
db.session.add(new_contact_form)
db.session.commit()
SQL 服务器表架构:
该架构与它显示的一样,其中id
被列为主键。
我最初在 SQL 服务器表中设置了自动增量,但尝试将其关闭但仍然无效。 我认为它与id
列有关但不确定
我尝试将phone
列更改为varchar(15)
但仍然出现相同的错误
使用香草sqlalchemy
我的连接字符串一切正常,但在这里切换到flask_sqlalchemy
并使用db.model
而不是sqlalchemy.Table
我的__init__.py
from flask import Flask
from .extensions import db
from .routes.routes import pages
from .routes.api import api
import os
import pyodbc
def create_app():
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = f'mssql+pyodbc://@{SERVER_NAME}/{DEV_DB}?driver={ODBC_18_DRIVER}&UID=USERNAME&PWD=PASSWORD'
db.init_app(app)
app.register_blueprint(pages)
app.register_blueprint(api)
app.secret_key = SECRET_KEY
return app
app = create_app()
extensions.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
我的主要路线:
from flask import Blueprint, render_template
from ..extensions import db
pages = Blueprint("pages", __name__, template_folder="templates", static_folder="static")
@pages.route('/')
def home():
new_contact_form = ContactFormsTable(
first_name="John",
last_name="Doe",
email="johndoe@email.com",
phone="555-555-5555",
msg="Hello, I would like to inquire about your services."
)
db.session.add(new_contact_form)
db.session.commit()
return render_template('home.html')
解决了
这是通过更新我的 Microsoft SQL 服务器驱动程序解决的。
感谢@GordThompson 的评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.