标签: sqlalchemy

SQLAlchemy:flush()和commit()之间有什么区别?

SQLAlchemy flush()commit()SQLAlchemy 之间有什么区别?

我已经阅读了文档,但没有更明智 - 他们似乎假设我没有预先理解.

我对它们对内存使用的影响特别感兴趣.我正在从一系列文件(总共约500万行)中将一些数据加载到数据库中,并且我的会话偶尔会崩溃 - 它是一个大型数据库和一台内存不足的机器.

我想知道我是否使用了太多但commit()没有足够的flush()电话 - 但是如果没有真正了解其中的差异,那就很难说了!

python sqlalchemy

386
推荐指数
7
解决办法
9万
查看次数

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中filter和filter_by的区别是什么?

任何人都可以解释SQLAlchemy 之间的区别filterfilter_by功能吗?我很困惑,不能真正看到差异.我应该使用哪一个?

python sqlalchemy

278
推荐指数
5
解决办法
12万
查看次数

将sqlalchemy行对象转换为python dict

是否有一种简单的方法来迭代列名和值对?

我的sqlalchemy版本是0.5.6

下面是我尝试使用dict(row)的示例代码,但它抛出异常,TypeError:'User'对象不可迭代

import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

print "sqlalchemy version:",sqlalchemy.__version__ 

engine = create_engine('sqlite:///:memory:', echo=False)
metadata = MetaData()
users_table = Table('users', metadata,
     Column('id', Integer, primary_key=True),
     Column('name', String),
)
metadata.create_all(engine) 

class User(declarative_base()):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)

    def __init__(self, name):
        self.name = name

Session = sessionmaker(bind=engine)
session = Session()

user1 = User("anurag")
session.add(user1)
session.commit()

# uncommenting next line throws exception 'TypeError: 'User' object is not iterable'
#print …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

220
推荐指数
19
解决办法
18万
查看次数

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

如何在SQLAlchemy-flask应用程序中执行原始SQL

如何在SQLAlchemy中执行原始SQL?

我有一个python web应用程序,它运行在烧瓶上,并通过SQLAlchemy与数据库连接.

我需要一种方法来运行原始SQL.该查询涉及多个表连接以及内联视图.

我试过了:

connection = db.session.connection()
connection.execute( <sql here> )
Run Code Online (Sandbox Code Playgroud)

但我不断收到网关错误.

python sql sqlalchemy flask flask-sqlalchemy

193
推荐指数
6
解决办法
22万
查看次数

如何将SqlAlchemy结果序列化为JSON?

Django有一些从DB到JSON格式返回的ORM模型的自动序列化.

如何将SQLAlchemy查询结果序列化为JSON格式?

我试过,jsonpickle.encode但它编码查询对象本身.我试过了,json.dumps(items)但它回来了

TypeError: <Product('3', 'some name', 'some desc')> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

是否真的很难将SQLAlchemy ORM对象序列化为JSON/XML?它没有默认的序列化器吗?现在序列化ORM查询结果是非常常见的任务.

我需要的只是返回SQLAlchemy查询结果的JSON或XML数据表示.

需要在javascript datagird中使用SQLAlchemy对象的JSON/XML格式的查询结果(JQGrid http://www.trirand.com/blog/)

python json sqlalchemy

169
推荐指数
9
解决办法
14万
查看次数

在SQLAlchemy中使用OR

我查看了文档,我似乎无法找到如何在SQLAlchemy中进行OR查询.我只是想做这个查询.

SELECT address FROM addressbook WHERE city='boston' AND (lastname='bulger' OR firstname='whitey')
Run Code Online (Sandbox Code Playgroud)

应该是这样的

addr = session.query(AddressBook).filter(City == "boston").filter(????)
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

168
推荐指数
4
解决办法
12万
查看次数

sqlalchemy在多个列中是唯一的

假设我有一个代表位置的类.地点"属于"客户.位置由unicode 10字符代码标识."位置代码"在特定客户的位置中应该是唯一的.

The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Run Code Online (Sandbox Code Playgroud)

因此,如果我有两个客户,客户"123"和客户"456".它们都可以有一个名为"main"的位置,但两个位置都不能称为main.

我可以在业务逻辑中处理这个问题,但我想确保无法在sqlalchemy中轻松添加需求.unique = True选项似乎仅在应用于特定字段时才起作用,并且会导致整个表只有所有位置的唯一代码.

python sqlalchemy

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

SQLAlchemy是否有相当于Django的get_or_create?

我想从数据库中获取一个对象(如果它已经存在)(基于提供的参数),或者如果不存在则创建它.

Django get_or_create(或来源)这样做.SQLAlchemy中是否有等效的快捷方式?

我目前正在明确地写出这样的:

def get_or_create_instrument(session, serial_number):
    instrument = session.query(Instrument).filter_by(serial_number=serial_number).first()
    if instrument:
        return instrument
    else:
        instrument = Instrument(serial_number)
        session.add(instrument)
        return instrument
Run Code Online (Sandbox Code Playgroud)

python django sqlalchemy

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

标签 统计

python ×10

sqlalchemy ×10

django ×1

flask ×1

flask-sqlalchemy ×1

json ×1

sql ×1