草庐IT

Sqlalchemy-searchable

全部标签

mysql - 更改 SQLAlchemy 的 Session.delete() 行为

关于SQLAlchemy的Session的delete()方法是否有任何配置可能性?我想让相应的对象在数据库中标有已删除的标志,而不是从中删除。有没有办法做到这一点?目的是在不失去SQLAlchemy的级联特性优势的情况下,构建一个没有破坏性更新的数据库。 最佳答案 创建您自己的session类继承自Session并用您自己的逻辑覆盖delete()方法(对于那些需要逻辑删除),回退到其他对象的默认实现。如果你使用sessionmaker或者类似的工厂,你也可以在class_参数中提供你的类。希望这能回答您的问题。但是,话虽如此,对

python - 为什么带有 charset=utf8 的 SQLAlchemy create_engine 返回 python 类型 <str> 而不是类型 <unicode>?

使用Python2.7和SQLAlchemy0.7,我使用以下命令连接到MySQL数据库:engine=create_engine('mysql://username:password@host/dbname?charset=utf8',echo=False)根据SQLAlchemy文档,设置charset=utf8自动意味着use_unicode=1,因此所有字符串都应返回为unicode。http://docs.sqlalchemy.org/en/rel_0_7/dialects/mysql.html具体举例#setclientencodingtoutf8;allstringsco

MySQL 和 SQLAlchemy : getting N recent comments for multiple items

我正在尝试编写查询以获取多个项目的N个最新评论。目前,我正在循环遍历每个项目的查询:foriinitemIds:Comment.query.filter_by(itemId=i).order_by(Comment.id.desc()).limit(3)但这真的很慢。我想要一个获取所有评论的查询,但不知道如何实现。我尝试过使用union但没有成功。看来MySQL、order_by和union存在问题。我正在尝试达到以下效果:a=Comment.query.filter_by(itemId=1).order_by(Comment.id.desc()).limit(3)b=Comment.q

python - 如何配置 sqlalchemy 以正确存储表情符号?

使用sqlalchemy0.9.7,我试图将表情符号存储到启用了utf8mb4的MySQL5.5中。但是,出于某种原因,sqlalchemy正在杀死我的表情符号字符,我不知道为什么。在尝试通过sqlalchemy保存数据之前,我可以在对象中看到表情符号字符。保存后,抛出错误,表情符号呈现为????。错误如下。请注意,它被输出type(post.message)和post.message的调试消息包围。--------------------------------------------------------------------------------DEBUGin__init_

python - SQLAlchemy 删除级联完整性错误

我正在尝试从我的数据库中删除一个订单,同时删除与其相关的所有ordereditems。withcontextlib.closing(DBSession())assession:try:returnedOrder=session.query(ORDER).filter_by(ORDERSID=orderID).first()session.delete(returnedOrder)session.commit()exceptexc.SQLAlchemyError,error:session.rollback()raise_database_error(error)else:return'

python - 比较 SQLAlchemy 中的 DateTime 和 Interval

我有这门课:classMonitor(db.Model):'''BaseMonitorclass.'''__tablename__='monitor'id=db.Column(db.Integer(),primary_key=True)last_checked=db.Column(db.DateTime(timezone=False))poll_interval=db.Column(db.Interval(),default=datetime.timedelta(seconds=300))我有这个查询,我试图只返回自(现在-间隔)以来未检查过的对象:monitors=db.sessio

python - 我怎样才能使用 SQLAlchemy 做 "mysql explain"

我有一个像这样的sql:DBSession().query(Model).filter(***)我想用SQLAlchemy来解释这个sql。 最佳答案 您想compileyourSQLAlchemyqueryintoastring;使用正确的方言并为绑定(bind)参数使用文字值query=DBSession().query(Model).filter(***)#youshouldhaveanenginereferenceusedtocreatetheDBSessionobjectsql=query.statement.compil

python - SQLAlchemy 不区分大小写基于 IN 的搜索查询?

如何以安全的方式在SQLAclhemyORM中执行不区分大小写的IN搜索?我自己和我项目中的其他人都在寻找这个,但我们似乎找不到符合我们需要的任何东西。在原始SQL中我可以这样做:SELECT*FROMTABLENAMEWHEREUPPER(FIELDNAME)IN(UPPER('foo'),UPPER('bar'));..如果FOO和BAR在未知情况下不是用户输入。事实上,我担心以下几点:安全性:我不想以SQL注入(inject)攻击的形式访问BobbyTables(http://xkcd.com/327/)。我找不到告诉我如何在SQLAlchemy中转义字符串的文档,否则我会觉得加

python - SQLAlchemy:如何使用连接删除

我在使用SQLAlchemy做这样的事情时遇到了麻烦:DELETEaFROMaINNERJOINbONb.`aId`=a.`Id`WHERE`b`.`xxx`=?;正如这里的帖子:SQLAlchemy:Createdeletequeryusingself-joinonMySQL我知道很难在SQLAlchemy中使用join进行删除。所以我现在这样做:session.execute('DELETEaFROMaINNERJOINbONb.`aId`=a.`Id`WHERE`b`.`xxx`=%d;'%xxx)但这让我非常恼火,比如:SQL注入(inject)问题,等等。有没有办法用SQLA

python - SQLalchemy 返回 "stale"行?

我有一个表(MySQL),其中有一行。我可以很好地阅读它:self._session.query(Automatic).\filter(Automatic.do_when但是,如果我随后从表中删除该行(使用mysql客户端或phpMyAdmin),该行仍由上面的代码返回。我不知道这是否与问题“HowtodisableSQLAlchemycaching?”有关。编辑:添加一个self._session.commit()之后没有区别。 最佳答案 编辑:根据eggyal's,在阅读之前添加commit()就可以了。解释。self._ses