Tag: sqlalchemy

奇怪的SQLAlchemy错误信息:TypeError:'dict'对象不支持索引

我正在使用手工制作的SQL从PG数据库获取数据,使用SqlAlchemy。 我正在尝试一个查询,其中包含SQL像运算符'%',似乎通过循环引发SqlAlcjhemy: sql = """ SELECT DISTINCT u.name from user u INNER JOIN city c ON u.city_id = c.id WHERE c.designation=upper('fantasy') AND c.id IN (select id from ref_geog where short_name LIKE '%opt') """ # The last line in the above statement throws the error mentioned in the title. # However if the last line is […]

sqlalchemy – for循环中查询和query.all之间的区别

我想问一下是什么区别 for row in session.Query(Model1): pass 和 for row in session.Query(Model1).all(): pass 是第一个不知何故迭代器轰炸你的数据库与单个查询和后者“热切”查询整个事情作为一个列表(如范围(X)与Xrange(X))?

在使用sqlalchemy的声明性ORM扩展时使用多列索引

根据文档: http : //docs.sqlalchemy.org/en/latest/core/constraints.html#indexes 以及sqlalchemy.Column类中的注释,我们应该使用sqlalchemy.schema.Index类来指定包含多个多重索引的索引。 但是,该示例显示了如何通过直接使用Table对象来执行此操作: meta = MetaData() mytable = Table('mytable', meta, # an indexed column, with index "ix_mytable_col1" Column('col1', Integer, index=True), # a uniquely indexed column with index "ix_mytable_col2" Column('col2', Integer, index=True, unique=True), Column('col3', Integer), Column('col4', Integer), Column('col5', Integer), Column('col6', Integer), ) # place an index on col3, col4 Index('idx_col34', mytable.c.col3, mytable.c.col4) 如果我们使用声明式的ORM扩展,我们应该怎么做呢? […]

在sqlalchemy中分组和计数function

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

debugging(显示)通过SQLAlchemy发送给db的SQL命令

我有一个名为Person的ORM类,它围绕着一个人表: 设置连接到db等之后,我运行ff语句。 people = session.query(Person).all() 人表不包含任何数据(至今),所以当我打印variables的人时,我得到一个空的列表。 我将在我的ORM类People中引用的表重命名为people_foo(不存在)。 然后我再次运行脚本。 我很惊讶,试图访问不存在的表时没有引发exception。 因此,我有以下两个问题: 我如何设置SQLAlchemy,以便它将数据库错误传播回脚本? 我如何查看(即打印)正在发送到数据库引擎的SQL 如果有帮助,我使用PostgreSQL作为数据库 [编辑] 我正在写一个包。 在我的__main__.py脚本中,我有以下代码(缩写在这里): ### __main__.py import common # imports logging and defines logging setup funcs etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [options] <commands>", version="%prog 1.0") commands = OptionGroup(parser, "commands") parser.add_option( "-l", "–logfile", dest="logfile", metavar="FILE", help="log to FILE. if not […]

SQLAlchemy:级联删除

我必须用SQLAlchemy的级联选项丢失一些微不足道的东西,因为我不能得到一个简单的级联删除来正确操作 – 如果一个父元素被删除,那么这个子元素将持续存在,并且为null外键。 我在这里提供了一个简明的testing用例: from sqlalchemy import Column, Integer, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Parent(Base): __tablename__ = "parent" id = Column(Integer, primary_key = True) class Child(Base): __tablename__ = "child" id = Column(Integer, primary_key = True) parentid = Column(Integer, ForeignKey(Parent.id)) […]

SQLAlchemy:创build与重用会话

只是一个简单的问题:SQLAlchemy会谈论调用sessionmaker()一次,但每次需要与您的数据库交谈时调用生成的Session()类。 对于我来说这意味着第二次我会做我的第一次session.add(x)或类似的东西,我会先做 from project import Session session = Session() 到目前为止我所做的是在我的模型中调用session = Session() ,然后在应用程序中的任何位置总是导入相同的会话。 由于这是一个web应用程序,这通常意味着相同的(作为一个视图执行)。 但是区别在哪里? 使用一个会话一直反对使用它的数据库的东西,直到我的function完成,然后创build一个新的下一次我想谈谈我的数据库的缺点是什么? 我得到,如果我使用多个线程,每个人应该得到自己的会议。 但是使用scoped_session() ,我已经确定这个问题不存在,是吗? 请澄清我的假设是否有错误。

通过SQLAlchemy获取随机行

如何使用SQLAlchemy从表中select(或某些)随机行?

如何更新SQLAlchemy行条目?

假设表有三列: username , password和no_of_logins 。 当用户尝试login时查询类似查询的条目 user=User.query.filter_by(username=form.username.data).first() 如果密码匹配,他继续进行。 我想要做的是统计用户login多less次。因此,当他成功logging日志时,我想增加no_of_logins字段并将其存回用户表。 我不知道如何使用SqlAlchemy运行更新查询。

什么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快速查找类似的string -tl; drinput两个string得到相似的百分比)。 我已经做了一些关于如何使用Django ORM进行search的方法,并且除了使用原始的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]) 然而,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)) […]