小编Ilj*_*ilä的帖子

SQLAlchemy ORDER BY DESCENDING?

如何descending在SQLAlchemy查询中使用ORDER BY ,如下所示?

此查询有效,但按升序返回:

query = (model.Session.query(model.Entry)
        .join(model.ClassificationItem)
        .join(model.EnumerationValue)
        .filter_by(id=c.row.id)
        .order_by(model.Entry.amount) # This row :)
        )
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

.order_by(desc(model.Entry.amount))
Run Code Online (Sandbox Code Playgroud)

然后我得到:NameError: global name 'desc' is not defined.

python sqlalchemy

383
推荐指数
5
解决办法
27万
查看次数

SQLAlchemy IN子句

我正在尝试在sqlalchemy中执行此查询

SELECT id, name FROM user WHERE id IN (123, 456)
Run Code Online (Sandbox Code Playgroud)

我想[123, 456]在执行时绑定列表.

python sqlalchemy

207
推荐指数
5
解决办法
15万
查看次数

ImportError:没有名为MySQLdb的模块

我指的是以下教程,为我的Web应用程序创建一个登录页面. http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

我遇到了数据库问题.我得到了一个

ImportError: No module named MySQLdb
Run Code Online (Sandbox Code Playgroud)

当我执行

http://127.0.0.1:5000/testdb
Run Code Online (Sandbox Code Playgroud)

我已经尝试了所有可能的方法来安装python mysql,教程中提到的一个,easy_install,sudo apt-get install.

我在我的虚拟环境中安装了mysql.我的目录结构与本教程中解释的相同.该模块已成功安装在我的系统中,但仍然出现此错误.

请帮忙.可能导致这种情况的原因.

python mysql sqlalchemy mysql-python flask

105
推荐指数
8
解决办法
19万
查看次数

Flask-SQLalchemy更新行的信息

如何更新行的信息?

例如,我想更改id为5的行的name列.

python sqlalchemy flask-sqlalchemy

95
推荐指数
4
解决办法
11万
查看次数

sqlalchemy中的分组和计数功能

我想在sqlalchemy中使用"group by and count"命令.我怎样才能做到这一点?

python group-by sqlalchemy count

89
推荐指数
3
解决办法
8万
查看次数

没有Web服务器的Spring Boot

我有一个简单的Spring Boot应用程序,它从JMS队列获取消息并将一些数据保存到日志文件中,但不需要Web服务器.有没有办法在没有Web服务器的情况下启动Spring Boot?

java spring-boot

85
推荐指数
10
解决办法
8万
查看次数

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万
查看次数

SQLAlchemy可以做什么,Django ORM不能做的例子

我最近在使用Pyramid和SQLAlchemy进行了大量的研究,而不是在Django中保留当前的应用程序.这本身就是一场辩论,但我不是在讨论这个问题.

我想知道的是,为什么SQLAlchemy普遍被认为比Django ORM更好?几乎每一个(如果不是每一个)我在SQLAlchemy这两个好处之间找到的比较.我认为性能是一个很大的性能,因为SQLAlchemy的结构可以让它更顺利地转换为SQL.

但是,我也听说过,使用更难的任务,Django ORM几乎不可能使用.我想说明这可能是一个多大的问题.我一直在阅读切换到SQLAlchemy的原因之一是当Django ORM不再适合您的需求时.

因此,简而言之,有人可以提供SQLAlchemy可以执行的查询(不一定是实际的SQL语法),但Django ORM不可能在没有添加额外的原始SQL的情况下做到吗?

更新:

自从我第一次问到这个问题以来,我一直注意到这个问题得到了很多关注,所以我想多花两美分.

最后我们最终使用了SQLAlchemy,我必须说我对这个决定感到满意.

我正在重新审视这个问题以提供SQLAlchemy的一个额外功能,到目前为止,我还没有能够在Django ORM中复制.如果有人可以提供一个如何做到这一点的例子,我会很乐意吃掉我的话.

假设您想使用一些postgresql函数,例如similarity(),它提供模糊比较(请参阅:快速查找与PostgreSQL类似的字符串 - tl; dr输入两个字符串获得百分比相似性).

我已经用Django ORM做了一些关于如何做到这一点的搜索,除了使用原始的sql之外什么也没发现,因为他们的文档中似乎很明显:https://docs.djangoproject.com/en/dev/topics/db/sql /.

Model.objects.raw('SELECT * FROM app_model ORDER BY \
similarity(name, %s) DESC;', [input_name])
Run Code Online (Sandbox Code Playgroud)

但是,SQLalchemy有func(),如下所述:http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.func

from sqlalchemy import desc, func
session.query(Model).order_by(func.similarity(Model.name, input_name))
Run Code Online (Sandbox Code Playgroud)

这允许您为任何已定义的sql/postgresql/etc函数生成sql,而不需要原始sql.

python sqlalchemy django-orm

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

SQLAlchemy ManyToMany具有附加字段的辅助表

我有3个表:User,Community,community_members(用于关系many2many的用户和社区).

我使用Flask-SQLAlchemy创建这个表:

community_members = db.Table('community_members',
                db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                db.Column('community_id', db.Integer, db.ForeignKey('community.id')),
                )


class Community(db.Model):
    __tablename__ = 'community'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False, unique=True)
    members = db.relationship(User, secondary=community_members,
                            backref=db.backref('community_members', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)

现在我想向community_members添加其他字段,如下所示:

community_members = db.Table('community_members',
                db.Column('id', db.Integer, primary_key=True),
                db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                db.Column('community_id', db.Integer, db.ForeignKey('community.id')),
                db.Column('time_create', db.DateTime, nullable=False, default=func.now()),
                )
Run Code Online (Sandbox Code Playgroud)

现在在python shell中我可以这样做:

创建社区:

> c = Community()
> c.name = 'c1'
> db.session.add(c)
> db.session.commit()
Run Code Online (Sandbox Code Playgroud)

将成员添加到社区:

> u1 = User.query.get(1)
> u2 = User.query.get(2)
> c.members.append(u1)
> c.members.append(u2)
> db.session.commit() …
Run Code Online (Sandbox Code Playgroud)

python orm many-to-many sqlalchemy flask-sqlalchemy

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

SQLAlchemy将多个外键在一个映射类中转换为相同的主键

我试图设置一个postgresql表,它有两个指向另一个表中相同主键的外键.

当我运行脚本时,我收到错误

sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系Company.stakeholder上的父/子表之间的连接条件 - 有多个链接表的外键路径.指定'foreign_keys'参数,提供应列为包含对父表的外键引用的列的列表.

这是SQLAlchemy文档中的确切错误,但当我复制它们提供的解决方案时,错误不会消失.我能做错什么?

#The business case here is that a company can be a stakeholder in another company.
class Company(Base):
    __tablename__ = 'company'
    id = Column(Integer, primary_key=True)
    name = Column(String(50), nullable=False)

class Stakeholder(Base):
    __tablename__ = 'stakeholder'
    id = Column(Integer, primary_key=True)
    company_id = Column(Integer, ForeignKey('company.id'), nullable=False)
    stakeholder_id = Column(Integer, ForeignKey('company.id'), nullable=False)
    company = relationship("Company", foreign_keys='company_id')
    stakeholder = relationship("Company", foreign_keys='stakeholder_id')
Run Code Online (Sandbox Code Playgroud)

我在这里看到过类似的问题,但有些答案建议人们primaryjoin在文档中使用a 表明你primaryjoin在这种情况下不需要.

python postgresql sqlalchemy

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