gpt4 book ai didi

python - SQLAlchemy中的VALUES子句

转载 作者:行者123 更新时间:2023-12-04 12:09:03 29 4
gpt4 key购买 nike

有没有一种方法可以在SQLAlchemy中构建Query对象,该对象等同于:

SELECT * FROM (VALUES (1, 2, 3)) AS sq;

根据我在文档中看到的内容, VALUES子句仅与 INSERT一起使用。

最佳答案

插入中的“VALUES”是标准SQL,独立的“VALUES”关键字是Postgresql。在PGValues上有一个针对此的快速编译器配方(如果有一天我更改了Wiki,请在此处复制):

from sqlalchemy import *
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.sql.expression import FromClause
from sqlalchemy.sql import table, column

class values(FromClause):
def __init__(self, *args):
self.list = args

def _populate_column_collection(self):
self._columns.update(
[("column%d" % i, column("column%d" % i))
for i in xrange(1, len(self.list[0]) + 1)]
)

@compiles(values)
def compile_values(element, compiler, asfrom=False, **kw):
v = "VALUES %s" % ", ".join(
"(%s)" % ", ".join(compiler.render_literal_value(elem, None) for elem in tup)
for tup in element.list
)
if asfrom:
v = "(%s)" % v
return v

if __name__ == '__main__':
t1 = table('t1', column('a'), column('b'))
t2 = values((1, 0.5), (2, -0.5)).alias('weights')
print select([t1, t2]).select_from(t1.join(t2, t1.c.a==t2.c.column2))

关于python - SQLAlchemy中的VALUES子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18858291/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com