Ejemplo n.º 1
0
def generate_rst(modules_fn, types_fn):
    from preql import Preql
    p = Preql()

    with open(types_fn, 'w', encoding='utf8') as f:
        print('Preql Types', file=f)
        print('===========', file=f)
        for t in T.values():
            try:
                print(autodoc(t).print_rst(), file=f)
            except NotImplementedError:
                pass

    with open(modules_fn, 'w', encoding='utf8') as f:
        print('Preql Modules', file=f)
        print('=============', file=f)
        print(doc_module(p('__builtins__')).print_rst(), file=f)
        p('import graph')
        print(doc_module(p('graph')).print_rst(), file=f)
Ejemplo n.º 2
0
from ipykernel.kernelbase import Kernel
# import requests

from . import __version__
import preql
from preql.autocomplete import autocomplete
from preql import Preql, Signal

pql = Preql()
pql.set_output_format('html')


class PreqlKernel(Kernel):
    implementation = 'Preql'
    implementation_version = __version__
    language = 'preql'
    language_version = preql.__version__
    language_info = {
        'name': 'Preql',
        'mimetype': 'text/x-pql',
        'file_extension': '.pql',
        'pygments_lexer': 'go',
    }
    banner = "Preql"

    def do_execute(self,
                   code,
                   silent,
                   store_history=True,
                   user_expressions=None,
                   allow_stdin=False):
Ejemplo n.º 3
0
"""Start a Preql interactive environment with an airports table, based on a JSON url.

Uses pandas for reading and handling the JSON file.
"""

import pandas as pd
from preql import Preql

AIRPORTS_JSON_URL = 'https://gist.githubusercontent.com/tdreyno/4278655/raw/7b0762c09b519f40397e4c3e100b097d861f5588/airports.json'

airports = pd.read_json(AIRPORTS_JSON_URL)

p = Preql()
p.import_pandas(airports_full=airports)
p('''
    // Remove unhelpful fields
    airports = airports_full{... !url !tz !phone !email !type}

    // All airports sorted by elevation (highest first)
    airports_by_highest = airports order {^elev}

    // Count of airports in each country, sorted by highest
    airports_by_country = airports {country => airport_count: count()} order {^airport_count}
''')
p.start_repl()
Ejemplo n.º 4
0
 def Preql(self, **kw):
     settings.optimize = self.optimized
     preql = Preql(self.uri, **kw)
     self.preql = preql
     return preql
Ejemplo n.º 5
0
class Vector(Base):
    __tablename__ = 'Vector'
    id = Column(Integer, primary_key=True)
    v = Column(Integer)


VECTOR_COUNT = 1000

settings.typecheck = False
settings.cache = True

Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
pql = Preql()
conn = engine.raw_connection().connection
pql._interp.state.db._conn = conn
cur = conn.cursor()
pql('''
    table Vector {
        id: t_id
        ...
    }
    func get(id_) = Vector[id==id_]{v}
''')


def pql_get(id_):
    res = pql.get(id_).to_json()
    if len(res) != 1:
Ejemplo n.º 6
0
---------------------------------------

test1 - simple selection and projection
    * SQL  : 0.010223775863647462
    * Preql: 0.010765978813171387
test2 - multijoin and groupby
    * SQL  : 0.03636674237251282
    * Preql: 0.03679810237884522

"""

import time

from preql import Preql, T

p = Preql()
p.load('../examples/chinook.pql', rel_to=__file__)

ITERS = 100

def _measure_sql(sql, iters=ITERS):
    start = time.time()
    for i in range(iters):
        l = p._interp.state.db._backend_execute_sql(sql).fetchall()
    elapsed = time.time() - start
    return l, elapsed / iters

def test1():
    print("test1 - simple selection and projection")
    sql = r"select *, a.Title from tracks t join albums a using(AlbumId) where Title like '%r%'"
    l1, elapsed = _measure_sql(sql)