因此,我只是在创建模型、提交一些条目和运行查询之后,尝试了解SQLAlchemy ORM方法的输出。大多数查询都很好.我要返回一个列表,但对于一些查询,它只返回一个对象(见下面)。我知道这听起来很明显,但这是正常的行为吗?我特别指的是filter_by查询,如下所示.
#sample_app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='...'
db =
如何使用来执行具有内联选择而不是显式表的SQL?
例如,如何使用SQLAlchemy而不是sql字符串来表示以下查询?
UPDATE data
SET invalid = True
FROM (
SELECT data.person_id as inner_col
FROM data
LEFT JOIN people
ON people.id = data.person_id
WHERE people.id IS NULL
) inner_query
WHERE inner_query.inner_col = data.person_id
我希望能够
在搜索sqlalchemy查询的sqlalchemy游标的正确类型提示时,下面是一个示例函数:
import sqlalchemy
from typing import Tuple, tuple
def get_cursor_and_records(
connection, query) -> Tuple[sqlalchemy.engine.cursor?, tuple]:
"""Make a database cursor for the query and fetch the query output
:param connectio
我试图使用原始sqlalchemy Postgres11查询将值插入到text()数据库中。当我通过psql客户机运行以下SQL查询时,它工作正常:
WITH a AS (
INSERT INTO person (id)
VALUES ('a')
RETURNING id
)
INSERT INTO person_info (person_id)
SELECT id
FROM a;
正确插入所有行:
# select id from person;
id
----
a
(1 row)
但是,如果我在sqlalche
我知道可以以不同的方式实现以下目标,但我正在寻找一种在SQLAlchemy中使用select语句作为列的特定方法。
一个示例查询是:
SELECT employee.*, (
SELECT avg(salary)
FROM employee as e1
WHERE e1.department_id = e2.department_id
) as avg_salary
FROM employee as e2
我只使用SQLAlchemy中的核心组件。到目前为止,我得到的是:
e1 = employee.alias('e1'
问题
如何重新排序SQLAlchemy查询对象中的列?
示例
给定一个表示以下查询的SQLAlchemy核心Select对象:
>>> print s
SELECT sum(accounts.amount) AS amount_sum, accounts.name
FROM accounts GROUP BY accounts.name
LIMIT :param_1
我想用完全相同的结构形成一个Select对象,但是按列的顺序移动。
SELECT accounts.name, sum(accounts.amount) AS amount_sum
FROM account
我使用以下代码编写了一个简单的SQLAlchemy核心(Python3.x)计数唯一查询:
table_object = sqlalchemy.Table(table_name, metadata, autoload=True, autoload_with=engine, schema=schema)
agg_fields = [get_column_correct_case(table_object, col) for col in agg_fields]
agg_col_obj = [table_object.c[col] for col in agg_field
使用SQLAlchemy查询MySQL数据库,我得到以下错误:
sqlalchemy.exc.OperationalError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (_mysql_exceptions.OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transactio
我正在做一个研究项目,需要为我的分析生成多个临时表。创建这些表的查询如下所示:
DECLARE crsr CURSOR FORWARD_ONLY FOR
SELECT DISTINCT
YEAR(s.date) AS Jahr,
MONTH(s.date) AS Monat
FROM ##preliminary_data___id__ AS s;
OPEN crsr;
FETCH NEXT FROM crsr
INTO
@year, @month;
WHILE @@fetch_Status = 0
BEGIN
PRINT 'Next Date --
如何将sqlalchemy子句字符串转换为sqlalchemy查询?我想我已经知道这张桌子了。
我正在构建一个有角度的网页应用程序,它点击一个用于数据的Flask。烧瓶正在使用sqlalchemy查询数据库。jQuery ()将过滤器导出为原始SQL,我想将其传递回api、解析和查询。
例如:
where_str = "name LIKE '%BOB%' AND fruit != 'pineapple'"
将被转换为:
session.query(Table).filter(Table.name.like('%BOB%')).fi
我们有一个MySQL数据库,并且我们正在从DB切换到SQLAlchemy。根据文档,ResultProxy.rowcount应该通过UPDATE语句报告受影响的行数。
如果我使用SQLAlchemy执行此查询:
UPDATE table
SET field =
IF(field < 10, 10, field) WHERE id = 1
如果有匹配的行,但对于任何"field“值(即使大于或等于10),它将返回行数1。当我使用DB API执行这个查询时,它返回了正确的受影响行数(当field大于或等于10时返回0,如果field小于10时返回1)。
这给我们带来了一些麻烦,因为我
我建立了地图..。
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Session
from sqlalchemy.ext.hybrid import hybrid_property
Base = declarative_base()
class Chap(Base):
__tablename__ = 'chap'
id = Column(Inte
编辑:已解析的
我正在尝试实现一个相当简单的SQL查询,该查询只返回包含字符串(SQLite3中的文本类型)长度小于17个字符的行。这是plan SQL中的查询:
SELECT * FROM table WHERE length(col) < 17
我尝试使用以下语句来获得这个结果:
result = session.query(Table).filter(func.length(Table.col) < 17).all()
SQLAlchemy正确地将其转换为[SQL: SELECT table.col AS table_col FROM table WHERE length(?
我有一个使用flask-sqlalchemy的查询,在这个查询中,我想要从数据库中删除所有与列表中的一个股票匹配的股票。这是我当前的查询:
Stock.query.filter(Stock.ticker.in_(new_tickers)).delete()
其中new_tickers是有效报价器的str列表。
我得到的错误如下:
sqlalchemy.exc.InvalidRequestError: Could not evaluate current criteria in Python: "Cannot evaluate clauselist with operator <f
我所需要的只是一个简单的逐组查询,如
SELECT
COUNT([Personnel].[PERSONNEL_ID]) AS value,
CASE
WHEN ([Personnel].[T_FIRSTNAME] = 'John') THEN 'John'
ELSE 'somethingelse'
END AS somelabel
FROM [Personnel]
GROUP BY
CASE
WHEN ([Personnel].[T_FIRSTNAME] = 'John')
我基本上是在尝试让这个SQL查询在SQLAlchemy中工作:
SELECT p.id, (SELECT COUNT(*) FROM response r WHERE <conditions on r> AND r.prompt_id = p.id)
FROM prompt p WHERE p.<conditions>;
除了子查询中对p.id的引用之外,我已经完成了所有的工作:
# used all over application
def filter_prompt(search_string, customer_id, state):
prompts =
短的
我在一个烧瓶应用程序中有可重用的SQLAlchemy查询,但我不知道把它们放在哪里最好。
更长
在阅读时,非常清楚如何创建基本的SQLAlchemy模型,例如这个表示博客文章的模型:
class Blog(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Text())
body = db.Column(db.Text())
date = db.Column(db.Date())
以及如何执行查询,例如按日期获取博客文章:
Blog.query.ord