标签: flask-sqlalchemy

Flask-SQLAlchemy如何删除单个表中的所有行

如何使用Flask-SQLAlchemy删除单个表中的所有行?

寻找这样的东西:

>>> users = models.User.query.all()
>>> models.db.session.delete(users)

# but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

83
推荐指数
3
解决办法
7万
查看次数

flask-sqlalchemy或sqlalchemy

我是烧瓶和sqlalchemy的新手,我刚刚开始研究烧瓶应用程序,我现在正在使用sqlalchemy.我想知道使用flask-sqlalchemy vs sqlalchemy是否有任何重大好处.我在http://packages.python.org/Flask-SQLAlchemy/index.html找不到足够的动机,或者我不明白这个价值!非常感谢您的澄清.

python sqlalchemy flask flask-sqlalchemy

81
推荐指数
5
解决办法
2万
查看次数

sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:postgres

我正在尝试使用 SQLAlchemy 连接到 Postgres 数据库。我已经安装了 psycopg2。但是,我收到错误sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres。如何配置 SQLAlchemy 以连接到 PostgreSQL?

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgres://username@localhost:5432/template1"

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

python postgresql sqlalchemy psycopg2 flask-sqlalchemy

76
推荐指数
4
解决办法
3万
查看次数

declarative_base()和db.Model有什么区别?

Flask-SQLAlchemy插件的快速入门教程指示用户创建继承db.Model该类的表模型,例如

app = Flask(__main__)
db = SQLAlchemy(app)
class Users(db.Model):
    __tablename__ = 'users'
    ...
Run Code Online (Sandbox Code Playgroud)

但是,SQLAlchemy教程和bottle-SQLAlchemy 自述文件都建议表模型继承Base实例化declarative_base().

Base = declarative_base()
class Users(Base):
    __tablename__ = 'users'
    ...
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?

python sqlalchemy bottle flask flask-sqlalchemy

70
推荐指数
1
解决办法
7494
查看次数

在Blueprint模型中使用Flask-SQLAlchemy而不参考应用程序

我正在尝试使用Blueprints在Flask中创建一个"模块化应用程序".

但是,在创建模型时,我遇到了必须引用应用程序以获取dbFlask-SQLAlchemy提供的对象的问题.我希望能够使用多个应用程序的蓝图(类似于Django应用程序的使用方式),所以这不是一个好的解决方案.*

  • 可以执行switcharoo,并让Blueprint创建db实例,然后应用程序将其与蓝图的其余部分一起导入.但是,任何其他希望创建模型的蓝图都需要从蓝图而不是应用程序导入.

我的问题是这样的:

  • 有没有办法让蓝图定义模型而不了解他们以后使用的应用程序 - 并且有几个蓝图汇集在一起​​?通过这个,我的意思是必须从你的蓝图导入应用程序模块/包.
  • 我从一开始就错了吗?蓝图是不是要独立于应用程序并且是可再发行的(Django应用程序)?
    • 如果没有,那么你应该使用什么模式来创建类似的东西?烧瓶扩展?你应该不这样做 - 并且可能将所有模型/模式集中在Ruby on Rails上?

编辑:我现在一直在考虑这个问题,这可能与SQLAlchemy有关,而不是Flask,因为你必须declarative_base()在声明模型的时候.和多数民众赞成得从什么地方来的,反正!

也许最好的解决方案是将项目的模式定义在一个地方并将其展开,就像Ruby on Rails一样.声明式SQLAlchemy类定义实际上更像是schema.rb而不是Django的models.py.我想这也可以更容易地使用迁移(来自alembicsqlalchemy-migrate).


我被要求提供一个例子,所以让我们做一些简单的事情:说我有一个描述"flatpages"的蓝图 - 存储在数据库中的简单"静态"内容.它使用一个只有短名称(用于URL),标题和正文的表.这是simple_pages/__init__.py:

from flask import Blueprint, render_template
from .models import Page

flat_pages = Blueprint('flat_pages', __name__, template_folder='templates')

@flat_pages.route('/<page>')
def show(page):
    page_object = Page.query.filter_by(name=page).first()
    return render_template('pages/{}.html'.format(page), page=page_object)
Run Code Online (Sandbox Code Playgroud)

然后,让这个蓝图定义自己的模型(这个simple_page/models.py)会很好:

# TODO Somehow get ahold of a `db` instance without referencing the app
# I …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy

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

如何围绕现有数据库构建烧瓶应用程序?

我已经有一个现有的数据库,里面有很多表和很多数据MySQL.我打算创建一个Flask应用程序并使用sqlalchemy.现在我问了irc并在google上四处寻找并尝试了以下想法:

首先,我使用sqlacodegen从我的生成模型DB.但后来我对此感到困惑,看了一下.我找到了这个.

这看起来像一个优雅的解决方案

所以其次,我models.py根据那里的解决方案改写了我,现在我更加困惑.我正在寻找最好的方法来构建这个烧瓶应用程序以及现有的数据库.

我查看了烧瓶文档但是对于已经存在的db的项目没有真正得到任何帮助.从头开始创建内容有很多好东西,创建数据库和所有内容.但我真的很困惑.

请注意它是我的第一天Flask,但我有经验Django,所以基本概念不是障碍.我需要一些指导来为这个用例选择最佳方法.非常感谢详细解释.通过详细说明我绝对不希望有人写下所有的代码和勺子喂我这个,但足以让我开始,这是将这个数据库无缝地集成到flaskvia中sqlalchemy.注意我的数据库在MySQL.

python mysql sqlalchemy flask flask-sqlalchemy

64
推荐指数
5
解决办法
4万
查看次数

Flask sqlalchemy多对多插入数据

我试图在Flask-SQLAlchemy中建立多对多关系,但似乎我不知道如何填充"多对多标识符数据库".你能帮我理解我做错了什么以及应该怎么看?

class User(db.Model):
    __tablename__ = 'users'
    user_id = db.Column(db.Integer, primary_key=True)
    user_fistName = db.Column(db.String(64))
    user_lastName = db.Column(db.String(64))
    user_email = db.Column(db.String(128), unique=True)


class Class(db.Model):
    __tablename__ = 'classes'
    class_id = db.Column(db.Integer, primary_key=True)
    class_name = db.Column(db.String(128), unique=True)
Run Code Online (Sandbox Code Playgroud)

然后我的标识符数据库:

student_identifier = db.Table('student_identifier',
    db.Column('class_id', db.Integer, db.ForeignKey('classes.class_id')),
    db.Column('user_id', db.Integer, db.ForeignKey('users.user_id'))
)
Run Code Online (Sandbox Code Playgroud)

到目前为止,当我尝试将数据插入数据库时​​,它看起来像这样.

# User
user1 = User(
            user_fistName='John',
            user_lastName='Doe',
            user_email='john@doe.es')

user2 = User(
            user_fistName='Jack',
            user_lastName='Doe',
            user_email='jack@doe.es')

user3 = User(
            user_fistName='Jane',
            user_lastName='Doe',
            user_email='jane@doe.es')

db.session.add_all([user1, user2, user3])
db.session.commit()

# Class
cl1 = Class(class_name='0A')
cl2 = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

58
推荐指数
2
解决办法
4万
查看次数

ImportError:没有名为sqlalchemy的模块

我无法在python中找到一个模块,尽管easy_install说已经安装了.任何想法如何解决这个问题?

$ python -c "from flaskext.sqlalchemy import SQLAlchemy"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sqlalchemy


$ python -V
Python 2.7


$ sudo easy_install sqlalchemy
Searching for sqlalchemy
Best match: SQLAlchemy 0.7.7
Adding SQLAlchemy 0.7.7 to easy-install.pth file

Using /usr/lib/python2.7/site-packages
Processing dependencies for sqlalchemy
Finished processing dependencies for sqlalchemy
Run Code Online (Sandbox Code Playgroud)

$ sudo pip install SQLAlchemy --upgrade要求已经是最新的:/usr/lib/python2.7/site-packages中的SQLAlchemy清理...

虽然pip说已经安装了.但我在sys.path输出中找不到它们.

$ sudo python -c "import sys;print sys.path" ['',
'/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-0.15-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask-0.8-py2.7.egg',
'/usr/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg',
'/usr/lib/python2.7/site-packages/Werkzeug-0.8.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask_WTF-0.5.2-py2.7.egg',
'/usr/lib/python2.7/site-packages/WTForms-0.6.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask_Mail-0.6.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/blinker-1.2-py2.7.egg', …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

49
推荐指数
6
解决办法
13万
查看次数

从sqlalchemy获得第一行

我有以下查询:

profiles = session.query(profile.name).filter(and_(profile.email == email, profile.password == password_hash))
Run Code Online (Sandbox Code Playgroud)

如何检查是否有一行,如何返回第一行(如果匹配则应该只有一行)?

python sqlalchemy flask flask-sqlalchemy

49
推荐指数
4
解决办法
6万
查看次数

AttributeError:'int'对象没有属性'_sa_instance_state'

我正在使用Flask在论坛模板上工作.当我尝试使用表单在浏览器中创建新线程时,SQLAlchemy会抛出AttributeError.当我尝试与Forum-to-Thread实现一对多的关系以及与Thread-to-User的一对多关系时,问题出现了.

models.py

class User(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(32), index=True, unique=True)
  password = db.Column(db.String(32), index=True)
  email = db.Column(db.String(120), index=True, unique=True)
  role = db.Column(db.SmallInteger, default=ROLE_USER)

  posts = db.relationship('Post', backref='author', lazy='dynamic')

class Forum(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(128))
  description = db.Column(db.Text)

  threads = db.relationship('Thread', backref='forum', lazy='dynamic')

class Thread(db.Model):

  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(128))
  author= db.Column(db.String(32))
  timestamp = db.Column(db.DateTime)
  forum_id = db.Column(db.Integer, db.ForeignKey('forum.id'))

  posts = db.relationship('Post', backref='thread', lazy='dynamic')

class Post(db.Model):

  id = db.Column(db.Integer, primary_key=True)
  body = db.Column(db.Text) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy one-to-many flask flask-sqlalchemy

44
推荐指数
1
解决办法
3万
查看次数