标签: flask-sqlalchemy

使用SQLAlchemy进行简单验证

我是sqlalchemy的新手,我正在努力实现模型字段的简单验证,如Django ORM(整数,电子邮件的最小值和最大值,......)所提供的.SQLAlchemy可以开箱即用吗?顺便说一句,我正在使用SQLAlchemy和Flask.

python sqlalchemy flask-sqlalchemy

2
推荐指数
1
解决办法
5051
查看次数

sqlalchemy多个外键到同一个表

我有一个postgres数据库,看起来像这样:

      Table "public.entities"
    Column     |            Type             |                   Modifiers                    
---------------+-----------------------------+------------------------------------------------
 id            | bigint                      | not null default nextval('guid_seq'::regclass)
 type_id       | smallint                    | not null
 name          | character varying           | 
Indexes:
    "entities_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "entities_parent_id_fkey" FOREIGN KEY (parent_id) REFERENCES entities(id)
    "entities_type_id_fkey" FOREIGN KEY (type_id) REFERENCES entity_types(id)
Referenced by:
    TABLE "posts" CONSTRAINT "posts_id_fkey" FOREIGN KEY (id) REFERENCES entities(id)
    TABLE "posts" CONSTRAINT "posts_subject_1_fkey" FOREIGN KEY (subject_1) REFERENCES entities(id)
    TABLE "posts" CONSTRAINT "posts_subject_2_fkey" FOREIGN KEY (subject_2) REFERENCES entities(id)

    Table "public.posts"
  Column …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy flask-sqlalchemy

2
推荐指数
1
解决办法
6107
查看次数

Flask-WTF表单成功发布,但验证永远不会发生

我已经在WTF表格上挣扎了很长一段时间了.但是这个错误,似乎永远不会消失.我什么时候尝试运行此代码,表单永远不会验证

意见:

@bundle.route('/content/add/', methods=['GET', 'POST'])
@bundle.route('/content/add', methods=['GET', 'POST'])
@bundle.route('/content/edit/<posturl>/', methods=['GET', 'POST'])
@bundle.route('/content/edit/<posturl>', methods=['GET', 'POST'])
@fas_login_required
def addcontent(posturl=None):
    form = CreateContent()
    form_action = url_for('content.addcontent')
    if posturl is not None:
        content = Content.query.filter_by(slug=posturl).first_or_404()
        form = CreateContent(obj=content)
        if form.slug.data == posturl and request.method == 'POST' and form.validate():
            form.populate_obj(content)
            db.session.commit()
            return redirect(url_for('content.addcontent',
                                    posturl=posturl, updated="True"))

    else:
        if request.method == 'POST' and form.validate():
            query = Content(form.title.data,
                            form.slug.data,
                            form.description.data,
                            form.media_added_ids.data,
                            form.active.data,
                            form.tags.data,
                            g.fas_user['username'],
                            form.type_content.data
                            )
            try:
                db.session.add(query)
                db.session.commit()
                # Duplicate entry
            except Exception as e:
                return str(e) …
Run Code Online (Sandbox Code Playgroud)

python wtforms flask-sqlalchemy flask-wtforms

2
推荐指数
2
解决办法
1467
查看次数

如何在sqlacodegen模型中使用.query属性

当我使用sqlacodegen创建models.py我无法使用时User.query,收到警告"[AttributeError:type object'User '没有属性'query']".我认为db.query是一个非常有用的属性,它在SQLAlchemy()中使用:

db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)

但我需要使用sqlacodegen为我们系统中的现有表创建模型.创建代码如下:

models.py

# coding: utf-8
from sqlalchemy import Column, Date, Float, Integer, String, Table, text
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata

class User(Base):
    __tablename__ = u'users'
    id = Column(Integer, primary_key=True)
    email = Column(String(64))
    username = Column(String(64))
    role_id = Column(Integer)
    password_hash = Column(String(128))
Run Code Online (Sandbox Code Playgroud)

现在我导入models.py:

from models import *
@main.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.name.data).first()
...
Run Code Online (Sandbox Code Playgroud)

当我运行时,给出的警告是:

AttributeError: type object 'User' has no …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy

2
推荐指数
1
解决办法
1391
查看次数

如何使用应用程序工厂正确设置flask-admin视图?

我正在尝试使用SQLAlchemy针对'用户'和'角色'模型设置flask-admin模型视图。我得到的不是功能管理员视图:

ValueError: Invalid model property name <class 'app.models.Role'>.desc
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Traceback (most recent call last):

File "/Users/dbg/Projects/Python/Current/ziff/flaskbase/manage.py", line 18, in <module>
    app = create_app(os.getenv('APP_CONFIG') or 'default')
  File "/Users/dbg/Projects/Python/Current/ziff/flaskbase/app/__init__.py", line 49, in create_app
    admin.add_view(RoleAdmin(Role, db.session))
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/contrib/sqla/view.py", line 288, in __init__
    menu_icon_value=menu_icon_value)
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/model/base.py", line 570, in __init__
    self._refresh_cache()
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/model/base.py", line 640, in _refresh_cache
    self._refresh_forms_cache()
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/model/base.py", line 580, in _refresh_forms_cache
    self._create_form_class = self.get_create_form()
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/model/base.py", line 856, in get_create_form
    return self.get_form()
  File "/usr/local/share/anaconda/envs/flaskbase27/lib/python2.7/site-packages/Flask_Admin-1.0.9-py2.7.egg/flask_admin/model/base.py", line 848, in …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy flask-admin

2
推荐指数
2
解决办法
2220
查看次数

如何解决它的危险.BadTimeSignature签名错误

我正在研究一个项目(不是任何合作项目,学术)我在使用其登录时的危险和登录管理器时遇到了麻烦.

我创建了一个注册表单.输入我的名字电子邮件和密码然后当我重新启动服务器时,我得到了这个:

```
itsdangerous.BadTimeSignature
BadTimeSignature: Signature 'GAMjfzQpbKlPraWesdT49W40pA8' does not match
```
Run Code Online (Sandbox Code Playgroud)

错误的流程是这样的:

return render_template('index.html')
  ctx.app.update_template_context(context)
    context.update(func())
 return dict(current_user=_get_user())
  current_app.login_manager._load_user()
    return self._load_from_cookie(request.cookies[cookie_name])
 user = self.token_callback(cookie)
line 93, in load_token
    data = login_serializer.loads(token, max_age=max_age)
.unsign(s, max_age, return_timestamp=True)
in unsign
    date_signed=timestamp)
BadTimeSignature: Signature 'GAMjfzQpbKlPraWesdT49W40pA8' does not match
Run Code Online (Sandbox Code Playgroud)

问题的根源在主应用程序运行文件中:

line 93, in load_token
    data = login_serializer.loads(token, max_age=max_age)

@login_manager.token_loader
def load_token(token):
    max_age = app.config["REMEMBER_COOKIE_DURATION"].total_seconds()

    #decrypt token
    data = login_serializer.loads(token, max_age=max_age)

    user = find-and-get-user-object(data)
    if user:
        if data[2] == users password: return user object
    return None …
Run Code Online (Sandbox Code Playgroud)

python cookies flask flask-sqlalchemy flask-login

2
推荐指数
1
解决办法
1908
查看次数

为什么要使用SqlAlchemy的func.lower(mystring)与mystring.lower()?

看看这个答案:Case Insensitive Flask-SQLAlchemy Query

为什么使用SQLAlchemy func.lower(mystring)而不是python的本机更好mystring.lower()

python sqlalchemy flask-sqlalchemy

2
推荐指数
1
解决办法
3772
查看次数

如何为SQLALCHEMY配置查找PostgreSQL uri

我试图将我的flask应用程序连接到我的prostgreSQL数据库,并且找到了这个配置示例(下面的代码)。我只是不知道如何找到我的postgreSQL URI

app = Flask(__name__)
#how do i know my postgresql URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/pre-registration'
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

python sql postgresql flask flask-sqlalchemy

2
推荐指数
1
解决办法
2350
查看次数

flask-admin:如何在编辑和创建表单中显示有意义的外键信息?

我有一个使用SQLAlechemy的烧瓶应用程序的Flask-Admin界面,我似乎无法弄清楚如何处理外键.具体来说,我有以下两种模式:

class DoctorType(db.Model):
    __tablename__ = 'doctor_type'
    id = db.Column(db.Integer, primary_key=True)
    doctor_type_english_name = db.Column(db.Unicode(255))
    doctors = db.relationship('Doctor')

    def __unicode__(self):
        return self.doctor_type_english_name

class Doctor(db.Model):
    __tablename__ = 'doctor'
    id = db.Column(db.Integer, primary_key=True)
    doctor_english_name = db.Column(db.Unicode(255))
    doctor_type_id = db.Column(db.Integer, db.ForeignKey('doctor_type.id'))

    def __unicode__(self):
        return self.doctor_english_name
Run Code Online (Sandbox Code Playgroud)

我想创建或编辑flask-admin形式的doctor_type_id字段是doctor_type_english_name的下拉列表,而不是像这样的整数输入:

医生类型输入字段

__unicode__在模型上有函数(我使用的是python 2.7).我尝试在自定义表单视图中修改form_ajax_refs但没有成功.任何帮助将非常感激!

python sqlalchemy flask flask-sqlalchemy flask-admin

2
推荐指数
2
解决办法
1585
查看次数

SQL-alchemy:ValueError要解压的值太多了?

我有一个运行mysql数据库的网站使用sql-alchemy包突然崩溃了.我做了一些研究,发现预期的问题是最新的sql-alchemy更新正在向flask-admin交付一个比预期更多的值

"cls, key = identity_key(instance=obj)"
Run Code Online (Sandbox Code Playgroud)


来源

建议的修复是编辑文件以接受第三个项目,但我无法使用我在环境中的权限执行此操作.

另一个答案链接到github上的回购,但我无法弄清楚这对我有什么帮助.我对此非常陌生,我不知道是否应该克隆回购或者如果我是这样做的话.

任何帮助表示赞赏!

这是错误转储

2018-01-22 20:01:59,593:[2018-01-22 20:01:59,592]应用程序中的错误:/ reservation/add [GET]
2018-01-22 20:01:59,594:Traceback(大多数情况下)最近的呼叫最后):
2018-01-22 20:01:59,594:
文件"fakepath/flask/app.py",1982年,在wsgi_app 2018-01-22
20:01:59,594:response = self.full_dispatch_request() 2018年1月22日20:01:59594:文件"fakepath /烧瓶/ app.py",线1614,在full_dispatch_request
2018年1月22日20:01:59594:RV = self.handle_user_exception(E)
2018-01- 22 20:01:59,595:文件"fakepath/flask/app.py",第1517行,在handle_user_exception2018-01-22 20:01:59,595:reraise(exc_type,exc_value,tb)2018-01-22 20:01: 59,595:文件"fakepath/flask/_compat.py",第33行,重新加入
2018-01-22 20:01:59,595:提升值2018-01-22 20:01:59,595:文件"fakepath/flask/app.py ",第1612行,在full_dispatch_request中2018-01-22
20:01:59,595:rv = self.dispatch_request()2018-01-22
20:01:59,596:文件"fakepath/flask/app.py",第1598行,在dispatch_request2018-01-22 20:01:59,596:return self.view_functionsrul e.endpoint 2018-01-22
20:01:59,596:文件"fakepath/flask_login/utils.py",第261行,在decorated_view
2018-01-22 20:01:59,596:return func(*args,**kwargs )
2018-01-22 20:01:59,597:文件"/home/apoalphagammawebmaster/inventory/app/auth/views.py",第248行,在add_reservation中2018-01-22
20:01:59,597:form = form, title ='Add Reservation')
2018-01-22 20:01:59,597:文件"fakepath/flask/templating.py",第134行,在render_template2018-01-22 20:01:59,597:context,ctx.app)
2018-01-22 20:01:59,597:文件"fakepath/flask/templating.py",第116行,在_render 2018-01-22
20:01:59,597:rv = template.render(context)
2018-01- 22 20:01:59,598:文件"fakepath/jinja2/asyncsupport.py",第76行,渲染
2018-01-22 20:01:59,598:return original_render(self,*args,**kwargs)2018-01- 22 20:01:59598:文件"fakepath/Jinja2的/ environment.py",线路1008,在渲染
2018年1月22日20:01:59598:返回self.environment.handle_exception(exc_info,真) …

python mysql sqlalchemy sqlalchemy-migrate flask-sqlalchemy

2
推荐指数
1
解决办法
1442
查看次数