Skip to content

Instantly share code, notes, and snippets.

@bool-dev
Last active October 27, 2017 15:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bool-dev/241a3ab4a32a6f157d919d1dabbdf858 to your computer and use it in GitHub Desktop.
Save bool-dev/241a3ab4a32a6f157d919d1dabbdf858 to your computer and use it in GitHub Desktop.
simple test flask sqlalchemy app
click==6.7
Flask==0.12.2
Flask-SQLAlchemy==2.3.2
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
psycopg2==2.7.3.2
SQLAlchemy==1.1.14
Werkzeug==0.12.2
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import load_only
from sqlalchemy import func, text
app = Flask(__name__)
db = SQLAlchemy()
class config(object):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'postgresql://testapp:testapp@localhost' +\
':5432/testapp'
class Contact(db.Model):
id = db.Column(db.BigInteger, primary_key=True)
email = db.Column(db.String(128))
def setup_db():
with app.test_request_context():
db.create_all()
db.session.add(Contact(email='abc@abc.com'))
db.session.add(Contact(email='abc1@abc.com'))
db.session.add(Contact(email='abc@abc.com'))
db.session.add(Contact(email='abc2@abc.com'))
db.session.add(Contact(email='abc1@abc.com'))
db.session.commit()
@app.route('/')
def test_having():
"""all_records = db.session.query(Contact).options(
load_only('email')).group_by(Contact.email).having(
func.count('*') > 1).all()"""
# ^ doesn't work
"""
all_records = db.session.query(func.count(Contact.id)).options(
load_only('email')).group_by(Contact.email).having(
func.count('*') > 1).all()"""
# ^ doesn't work
all_records = db.session.execute(
"SELECT count(*), email FROM contact group by email"
" having count(*) > 1").fetchall()
return 'Finally! ' + str(len(all_records))
if __name__ == '__main__':
app.config.from_object(config)
db.init_app(app)
setup_db()
app.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment