我在这里遵循指导: http://www.sqlalchemy.org/docs/orm/examples.html?highlight=versioning#versioned-objects 并遇到了一个问题。 我已经定义了我的关系,如: generic_ticker = relation('MyClass', backref=backref("stuffs")) 与string,所以它不关心我的模型模块的import顺序。 这一切正常工作正常,但是当我使用版本元我得到以下错误: sqlalchemy.exc.InvalidRequestError:当初始化映射器Mapper | MyClass | stuffs时,expression式'Trader'找不到名称(“name'MyClass'未定义”)。 如果这是一个类的名字,可以考虑在定义了两个相关类之后,将这个关系()添加到类中。 我跟踪了这个错误: File "/home/nick/workspace/gm3/gm3/lib/history_meta.py", line 90, in __init__ mapper = class_mapper(cls) File "/home/nick/venv/tg2env/lib/python2.6/site-packages/sqlalchemy/orm/util.py", line 622, in class_mapper mapper = mapper.compile() class VersionedMeta(DeclarativeMeta): def __init__(cls, classname, bases, dict_): DeclarativeMeta.__init__(cls, classname, bases, dict_) try: mapper = class_mapper(cls) _history_mapper(mapper) except UnmappedClassError: pass 我把这个问题的解决办法放在了lambda上:除了lambda之外的东西,并且在全部导入发生之后运行它们。 […]
我查看了文档 ,我似乎无法find如何在SQLAlchemy中执行OR查询。 我只想做这个查询。 SELECT address FROM addressbook WHERE city='boston' AND (lastname='bulger' OR firstname='whitey') 应该是这样的 addr = session.query(AddressBook).filter(City == "boston").filter(????)
我正在尝试在sqlalchemy中执行此查询 SELECT id, name FROM user WHERE id in (123,456) 我想在执行时绑定列表[123,456]。
任何人都可以解释SQLAlchemy中的filter和filter_by函数之间的区别吗? 我很困惑,不能真正看到差异。 我应该使用哪一个?
我怎样才能像下面这样在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 🙂 ) 如果我尝试: .order_by(desc(model.Entry.amount)) 那么我得到: NameError: global name 'desc' is not defined 。
我有一个〜10MloggingMySQL表,我使用SqlAlchemy接口。 我发现在这个表的大子集上查询会消耗太多的内存,即使我以为我使用了一个内置的生成器,可以智能地获取数据集的一小块数据块: for thing in session.query(Things): analyze(thing) 为了避免这种情况,我发现我必须构build自己的迭代器, lastThingID = None while True: things = query.filter(Thing.id < lastThingID).limit(querySize).all() if not rows or len(rows) == 0: break for thing in things: lastThingID = row.id analyze(thing) 这是正常的,还是有什么我错过有关SA内置发电机? 这个问题的答案似乎表明,内存消耗是不可预料的。
有没有人有经验分析一个Python / SQLAlchemy应用程序? 寻找瓶颈和devise缺陷的最好方法是什么? 我们有一个Python应用程序,数据库层由SQLAlchemy处理。 应用程序使用批处理devise,所以很多数据库请求都是在有限的时间内按顺序完成的。 目前运行需要太长时间,因此需要进行一些优化。 我们不使用ORMfunction,而数据库是PostgreSQL。
SQLAlchemy中的flush()和commit()之间有什么区别? 我已经阅读了文档,但是没有比这更明智的了 – 他们似乎假定我没有预先的理解。 我特别感兴趣的是他们对内存使用的影响。 我从一系列文件(总共大约500万行)将一些数据加载到数据库中,而且会话偶尔会翻倒 – 这是一个大型数据库和一个内存不多的机器。 我想知道如果我使用了太多的commit()和没有足够的flush()调用 – 但是没有真正理解它们之间的区别,很难说清楚!
新版本的SQLite有强制外键约束的能力,但是为了向后兼容,你必须为每个数据库连接单独打开它! sqlite> PRAGMA foreign_keys = ON; 我正在使用SQLAlchemy – 我怎样才能确保它始终打开? 我试过的是这样的: engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True) engine.execute('pragma foreign_keys=on') …但它不工作!…我错过了什么? 编辑:我认为我的真正的问题是,我有不止一个版本的SQLite安装,并没有使用最新的Python! >>> import sqlite3 >>> print sqlite3.sqlite_version 3.3.4 但是我只是下载了3.6.23,并把exe文件放在我的项目目录下! 我怎样才能找出它正在使用的.exe,并改变它?
为什么使用SQLAlchemy插入100,000行的简单testing用例比使用sqlite3驱动程序直接慢25倍呢? 我在实际应用中看到类似的减速。 我做错了什么? #!/usr/bin/env python # Why is SQLAlchemy with SQLite so slow? # Output from this program: # SqlAlchemy: Total time for 100000 records 10.74 secs # sqlite3: Total time for 100000 records 0.40 secs import time import sqlite3 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import scoped_session, […]