Пример #1
0
def create_data(num, model_name):
    """Создает num записей для model модели."""
    i = 0
    model = Session.query(metadata.tables[model_name])
    while i < num:
        object_data = {}
        for column in model.column_descriptions:
            if isinstance(column['type'], Integer) and column['name'] != 'id':
                if fk := column['expr'].foreign_keys:
                    t_model, t_pk = next(iter(fk)).target_fullname.split('.')
                    t_obj = Session.query(metadata.tables[t_model]).first()
                    object_data[column['name']] = getattr(t_obj, t_pk)
                else:
                    object_data[column['name']] = random.randint
            if isinstance(column['type'], String):
                if column['name'] == 'email':
                    object_data[column['name']] = fake.email()
                else:
                    object_data[column['name']] = fake.name()
            if isinstance(column['type'], Date):
                object_data[column['name']] = fake.date()
            if isinstance(column['type'], DateTime):
                object_data[column['name']] = fake.date_time()

        insert_query = metadata.tables[model_name].insert().values(
            **object_data)
        Session.execute(insert_query)
        Session.commit()
        i += 1
Пример #2
0
def registerHouse():
    get_lang(request)
    #generate form data
    form = RegisterForm(request.form)
    if request.method == 'POST':
        #store form data
        address = form.address.data
        city = form.city.data
        state = form.state.data
        zip = form.zip.data

        #generate lat/long from address
        results = Geocoder.geocode(address)
        result = results[0].coordinates
        lat = result[0]
        long = result[1]

        #create new db session
        sess = Session()

        #get user id for database relations
        account_id = session['id']

        #create new home: A new home is identified by street. city, zip, state, lat/long
        new_home = Home(account_id=account_id,
                        street_address=address,
                        city=city,
                        state=state,
                        zip_code=zip,
                        latitude=lat,
                        longitude=long)

        #Does the address already exist
        match = sess.query(Home.street_address)\
              .filter(Home.street_address==address)\
              .all()

        #If the address is unique the home is added
        if not match:
            print(f'Added: {new_home}')
            #add entry to database for home
            sess.add(new_home)

            #save changes
            sess.commit()

        #the address is not unique
        else:
            #error message
            flash("Address already registered")

            #return to registration page
            return render_template('registerHouse.html', form=form)

        #close connection
        sess.close()
        return redirect(url_for('dashboard'))
    return render_template('registerHouse.html', form=form)
Пример #3
0
 def wrapper(bot, update, *args, **kwargs):
     s = Session()
     if not Chat.q.get(update.message.chat.id):
         chat = Chat(id=update.message.chat.id,
                     is_private=update.message.chat.type == 'private')
         s.add(chat)
         s.commit()
     chat = Chat.q.get(update.message.chat.id)  # type: Chat
     return fn(bot, update, *args, chat, **kwargs)
Пример #4
0
 def wrapper(*args, **kwargs):
     s = Session()
     try:
         r = fn(*args, s, **kwargs)
         s.commit()
         return r
     except Exception:
         s.rollback()
         raise
     finally:
         s.close()
Пример #5
0
def create_book(**data):
    try:
        sess = Session()
        book = Book(name=data['name'],
                    author=data['author'],
                    description=data['description'])
        sess.add(book)
        sess.commit()
        result = True
    except Exception:
        result = False
    return result
Пример #6
0
def save(headers_and_options, row_header, schedules_data):
    session = Session()

    for row_index, row in enumerate(schedules_data):
        for col_index, col in enumerate(row):
            session.merge(
                Archive(class_id=row_header[row_index]['id'],
                        major_id=headers_and_options[col_index]['id'],
                        info=json.dumps(col, ensure_ascii=False)))

    session.commit()
    session.close()
Пример #7
0
def delete_user(user_id):
    try:
        result = False
        sess = Session()
        user = sess.query(User).get(user_id)
        if user:
            sess.delete(user)
            sess.commit()
            result = True
    except Exception:
        result = False
    return result
Пример #8
0
def delete_book(book_id):
    try:
        result = False
        sess = Session()
        book = sess.query(Book).get(book_id)
        if book:
            sess.delete(book)
            sess.commit()
            result = True
    except Exception:
        result = False
    return result
Пример #9
0
def post_new_class(new_class_name):
    session = Session()
    new_class_obj = ClassName(class_name=new_class_name)
    session.add(new_class_obj)
    session.commit()
    archives = session.query(Archive).filter_by(class_id=new_class_obj.id)
    [session.delete(archive) for archive in archives]
    session.commit()
    session.close()

    response = create_schedules_data()

    return response
Пример #10
0
 def save_news(self, news):
     session = Session()
     q = session.query(News)
     for n in news:
         published = n['published_parsed']
         date = datetime.date(published[0], published[1], published[2])
         link = n['link']
         title = n['title']
         existing_news = q.filter(News.link == link).all()
         if not existing_news:
             news = News(date=date, title=title, summary=n['summary'],
                         link=link)
             session.add(news)
     session.commit()
Пример #11
0
def ramp_up():
    _s = Session()
    for t in ['большое спасибо', 'большой рахмет']:
        t = ThanksADay(text=t)
        _s.add(t)

    for id, rate in [(398, 1), (643, 5), (840, 360)]:
        e = Exchange(id=id, rate=rate)
        _s.add(e)

    a = DonateAuthor(name='Неизвестный Человек')  # он должен быть #1
    _s.add(a)

    _s.commit()
    _s.close()
Пример #12
0
def update_book(book_id, **data):
    try:
        sess = Session()
        book = sess.query(Book).get(book_id)
        if not book:
            result = False
        else:
            book.name = data['name']
            book.author = data['author']
            book.description = data['description']
            sess.commit()
            result = True
    except Exception as err:
        result = False
    return result
Пример #13
0
async def add_order(request):
    """Метод добавления заказа пользователем."""
    user = request.app['user']
    request_body = await request.json()
    order_data = {'user_id': user.id, 'created_at': datetime.now().isoformat()}
    insert_query = metadata.tables['orders'].insert().values(**order_data)
    result = Session.execute(insert_query)
    Session.commit()
    [
        item.update({'order_id': result.inserted_primary_key[0]})
        for item in request_body
    ]
    Session.execute(metadata.tables['orders_goods'].insert(), request_body)
    Session.commit()
    return web.Response(status=HTTPStatus.CREATED)
Пример #14
0
def create_user(**data):
    try:
        # password = sha512(data['passwd'].encode('utf-8')).hexdigest()
        password = data['passwd']
        sess = Session()
        user = User(name=data['name'],
                    password=password,
                    active=True,
                    role=data['role'])
        sess.add(user)
        sess.commit()
        user_id = user.id
        result = True
    except Exception:
        user_id = None
        result = False
    return result, user_id
Пример #15
0
def update_user(user_id, **data):
    try:
        sess = Session()
        print('****', data['role'])
        # password = sha512(data['password'].encode('utf-8')).hexdigest()
        user = sess.query(User).get(user_id)
        if not user:
            result = False
        else:
            user.role = data['role']
            # user.passwd = password
            # user.active = data['active']
            sess.commit()
            result = True
    except Exception as err:
        result = False
    return result
Пример #16
0
def cron_update_db():
	session = Session()
	items = session.query(Item).all()

	for item in items:
		url = item.url
		response = get_amazon_price(url)
		currentPrice = response.get("price", None)

		if currentPrice:
			if currentPrice <= item.price:
				transactions = session.query(Transaction) \
					.filter(Transaction.requested_price >= currentPrice) \
					.all()

				send_emails(transactions)
			item.price = currentPrice


	session.commit()
Пример #17
0
def main():
    # create a new session before executing inserts
    session = Session()

    # days grab in 24 hour chunks
    for day in range(1, 32):
        # get weather for month of march
        march = datetime(2018, 3, day).timestamp()
        # print(march)

        lat = 33.699657
        lon = -86.635033
        weather = get_weather(march, lat, lon)
        weather = filter_weather(weather)
        # print(weather)

        # select on lat, lon, time
        # make a new Forecast
        for w in weather:
            # print(**w)
            new_forecast = Forecast(latitude=lat, longitude=lon, **w)

            # match on lat, lon, time
            match = session.query(Forecast)\
            .filter(Forecast.latitude==lat)\
            .filter(Forecast.longitude==lon)\
            .filter(Forecast.time==w['time'])\
            .all()

            # if there were no matching records, insert
            if not match:
                print(f'Added: {new_forecast}')
                session.add(new_forecast)

        # save changes
    session.commit()
    print('DONE')
Пример #18
0
def clear_data(model_name):
    """Полная очистка БД."""
    insert_query = metadata.tables[model_name].delete()
    Session.execute(insert_query)
    Session.commit()