5

SQLAlchemy で独自の集計関数を作成するにはどうすればよいですか? 簡単な例として、numpy を使用して分散を計算したいと思います。sqlite を使用すると、次のようになります。

import sqlite3 as sqlite
import numpy as np

class self_written_SQLvar(object):
  def __init__(self):
    import numpy as np
    self.values = []
  def step(self, value):
    self.values.append(value)
  def finalize(self):
    return np.array(self.values).var()

cxn = sqlite.connect(':memory:')
cur = cxn.cursor()
cxn.create_aggregate("self_written_SQLvar", 1, self_written_SQLvar)
# Now - how to use it:
cur.execute("CREATE TABLE 'mytable' ('numbers' INTEGER)")
cur.execute("INSERT INTO 'mytable' VALUES (1)") 
cur.execute("INSERT INTO 'mytable' VALUES (2)") 
cur.execute("INSERT INTO 'mytable' VALUES (3)") 
cur.execute("INSERT INTO 'mytable' VALUES (4)")
a = cur.execute("SELECT avg(numbers), self_written_SQLvar(numbers) FROM mytable")
print a.fetchall()
>>> [(2.5, 1.25)]
4

2 に答える 2

-1

最初に、sqlalchemy から func をインポートする必要があります

あなたは書ける

func.avg('フィールド名')

または func.avg('fieldname').label('user_deined')

または、mre情報を参照できます

http://www.sqlalchemy.org/docs/05/ormtutorial.html#using-subqueries

于 2009-06-27T10:07:39.400 に答える