标签: python-elixir

使用SQLAlchemy和sqlite嵌套事务

我正在使用SQLAlchemy(和Elixir)用SQLite作为数据库后端在Python中编写应用程序.我使用代码启动一个新的事务session.begin_transaction(),但是当我调用时,session.rollback()我收到以下错误:

sqlalchemy.exceptions.OperationalError: (OperationalError) no such savepoint: sa_savepoint_1 u'ROLLBACK TO SAVEPOINT sa_savepoint_1' []
Run Code Online (Sandbox Code Playgroud)

我也收到类似的错误session.commit().据我所知,sqlite支持SAVEPOINTS(http://www.sqlite.org/lang_savepoint.html).

如何使嵌套事务生效?

python sqlite sqlalchemy python-elixir

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

使用Elixir执行sql查询

我在一个连接到postgres数据库的项目中使用Elixir.我想在我连接的数据库上运行以下查询,但我不知道该怎么做,因为我对Elixir和SQLAlchemy很新.谁知道怎么样?

VACUUM FULL ANALYZE table

更新

错误是:"UnboundExecutionError:无法找到在SQL表达式或此会话上配置的绑定".与之前发布的session.close()相同的结果.我确实尝试过metadata.bind.execute(),这对于一个简单的选择很有用.但对于VACUUM,它说 - "InternalError:(InternalError)VACUUM无法在事务块内运行",所以现在我正在试图弄清楚如何关闭它.

更新2

我可以让查询执行,但我仍然得到相同的错误 - 即使我创建一个新会话并关闭前一个会话.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ... insert stuff
old_session.commit()
old_session.close()

new_sess = sessionmaker(autocommit=True)
new_sess.configure(bind=create_engine('postgres://user:pw@host/db', echo=True))
sess = new_sess()
sess.execute('VACUUM FULL ANALYZE table')
sess.close()
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

2009-12-10 10:00:16,769 INFO sqlalchemy.engine.base.Engine.0x...05ac VACUUM FULL ANALYZE table
2009-12-10 10:00:16,770 INFO sqlalchemy.engine.base.Engine.0x...05ac {}
2009-12-10 10:00:16,770 INFO sqlalchemy.engine.base.Engine.0x...05ac ROLLBACK
finishing failed run, (InternalError) VACUUM cannot run inside a transaction block
 'VACUUM FULL ANALYZE table' {}
Run Code Online (Sandbox Code Playgroud)

更新3

感谢大家的回应.我无法找到我想要的解决方案,但我想我会选择PostgreSQL中描述的解决方案 …

python postgresql sqlalchemy python-elixir

5
推荐指数
1
解决办法
3775
查看次数

":","@"与python docstrings中没有任何区别

我只是想更好地感受Python文档字符串的布局(之间""" """)

我见过不同布局的docstrings ......比如...

"""
@DESCRIPTION
Ive seen tags STARTING with an at-sign

:DESCRIPTION:
Tags with colons

DESCRIPTION
And tags with nothing

"""
Run Code Online (Sandbox Code Playgroud)

这些都有功能吗?是@用药剂关联?或者这些只是开发者之间的偏好?我查看了docstrings的样式指南,但看不到它在哪里解决这些问题......

谢谢!

documentation formatting docstring python-elixir

5
推荐指数
1
解决办法
669
查看次数

SQLAlchemy和Elixir?

我一直在使用django ORM,这很好很容易,但这次我正在做一个桌面应用程序而且我找到了SQLAlchemy,但我不确定是否会使用Elixir.你怎么看?它真的有用吗?

python sqlalchemy python-elixir

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

使用sqlalchemy.sql.functions.char_length作为过滤条件

我正在使用Elixir和sqla 0.6,我正在尝试查询我的模型:

class Document(Entity): 
    using_options(shortnames=True, order_by='doc_date')
    doc_number = Field(Unicode(20),index=True)
Run Code Online (Sandbox Code Playgroud)

...对于具有给定长度的数字的文档.

我在考虑这样的事情:

Document.query.filter(Document.doc_number.char_lenght()==5).all()
Run Code Online (Sandbox Code Playgroud)

......但显然,CHAR_LENGTH,而目前在sqlalchemy.sql.functions,是不是在这里工作.如何在声明性成语中使其工作,而不需要直接查询?

python sqlalchemy python-elixir

4
推荐指数
1
解决办法
1206
查看次数

如何遍历每个类声明,来自特定的基类?

我在徘徊elixir\sqlalchemy如何在我打电话的时候知道我在模型中声明的所有实体类setup_all()?我在我的一个小项目中需要这种功能,但我不知道.我试图通过elixir's steptrace setup_all(),我发现它将所有实体类的集合保存在"全局"列表中(或者它是dict?),但我无法捕捉到列表填充的那一刻.有任何想法吗?

python sqlalchemy python-elixir

4
推荐指数
1
解决办法
607
查看次数

按照OneToMany Elixir关系计数

我正在使用Elixir进行ORM,但我尝试按关系排序时遇到问题.

我想要做的是获得一个用户列表,按用户的帖子数排序.我试过像这样的方法

User.query.join(User.posts).order_by(func.count(User.posts)).all()
Run Code Online (Sandbox Code Playgroud)

没有任何成功.

这是我的Elixir实体:

class User(Entity):
    username = Field(Unicode(100))
    posts = OneToMany('Post', inverse='user')


class Post(Entity):
    content = Field(Unicode(20000))
    user = ManyToOne('User')
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy python-elixir

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