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
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)
def find_books(search_text): try: result = [] sess = Session() # books = sess.query(Book).filter(Book.name.contains(search_text)).order_by(Book.name).all() # result = [a.to_dict() for a in books] # %' or 1=1 or '% query = "SELECT * FROM book WHERE name like '%" + search_text + "%'" print(query) books = sess.execute(query) result = [{column: value for column, value in rowproxy.items()} for rowproxy in books] except Exception as e: result = [] return result
def clear_data(model_name): """Полная очистка БД.""" insert_query = metadata.tables[model_name].delete() Session.execute(insert_query) Session.commit()