Lin*_*ott 1 python flask flask-sqlalchemy
这是我的第一个python应用程序,我一直在努力使迁移与flask和sqlalchemy正常工作.我终于得到了它的工作,但现在当我运行应用程序时,我在向使用迁移代码修改的表中添加对象时出现错误.这是在db.session.add(newTag)上抛出异常的视图
def put(self):
json_data = request.get_json(force=True)
foo = json_data['foo'] if 'foo' in json_data else ''
bar = json_data['bar'] if 'bar' in json_data else ''
baz = json_data['baz'] if 'baz' in json_data else ''
try:
boo = parse(json_data['boo'])
far = parse(json_data['far'])
except:
return jsonify(result='Invalid date')
faz = json_data['faz'] if 'faz' in json_data else ''
if faz == '':
return jsonify(result="faz is missing")
newTag = Tags(faz, baz, foo, bar, boo, far, True)
db.session.add(newTag)
db.session.commit()
return {'Success, tag' + str(newTag.id) + ' created'}
Run Code Online (Sandbox Code Playgroud)
我的模型看起来像这样
class Tags(db.Model):
id = db.Column(db.Integer, primary_key=True)
faz = db.Column(db.String(255))
foo = db.Column(db.Integer)
bar = db.Column(db.Integer)
baz = db.Column(db.Integer)
boo = db.Column(db.DateTime)
far = db.Column(db.DateTime)
status = db.Column(db.Boolean)
def __init__(self, faz, foo, bar, baz, boo, far, status):
self.faz = faz
self.foo = foo
self.bar = bar
self.baz = baz
self.boo = boo
self.far = far
self.status = status
Run Code Online (Sandbox Code Playgroud)
我不确定是否需要任何进一步的细节来帮助我.我在包含我的SQLALCHEMY_DATABASE_URI的config.py文件中放了SQLALCHEMY_TRACK_MODIFICATIONS = False.
我有完全相同的错误.
这个错误实际上并不明确.我在mysql日志中寻找响应,但一切都很好.
然后我使用旧版本的sqlalchemy.我使用2.1版本,然后我通过版本1.0.我得到的错误更清楚.
要将SQLALCHEMY_TRACK_MODIFICATIONS设置为False或True,请更改您的错误.
问题是连接进入您的应用程序,您的数据库和您的sqlalchemy.
听到的是我的建筑
app
main.py
models.py
views
__init__.py
manage.py
views.py
Run Code Online (Sandbox Code Playgroud)
在我的init.py中,我把所有的配置
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@172.17.0.2/mydatabaseapp'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy()
db.init_app(app)
Run Code Online (Sandbox Code Playgroud)
然后我在manager.py中创建一个类来操作我的数据库所以我必须在manager.py中导入db,我这样做.
我的views.py只调用我的经理的方法,而我的main.py调用我的views.py函数
但问题是我总是有这个错误.所以我改变了我的架构.我在我的app文件夹中创建了一个文件config.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)
在文件中.在我的main.py中我放了
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@172.17.0.2/mydatabaseapp'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
Run Code Online (Sandbox Code Playgroud)
然后,如果我需要在我的应用程序中的某处调用db,我只需从main.py调用它,问题就解决了.
我不明白足够的烧瓶,是建筑解释你的问题真的很抱歉.我希望响应会对你有所帮助.我认为这个错误通常发生在烧瓶的配置进入ORM并且您的应用程序不正常时.
| 归档时间: |
|
| 查看次数: |
6167 次 |
| 最近记录: |