• Как получить всю БД в виде csv?

    @rPman
    Формат csv для данной задачи наиболее неподходящий, теряется информация о структуре, особенно когда на очередной строчке количество колонок меняется и еще страшнее - если не меняется, что там лежит, что в какой колонке - не известно, машина не прочтет а человек обматерит изобретателя этого бреда.

    Вторая проблема - денормализация, вот это объединение записей. Причина простая - реляционные базы данных по определению не хранят достаточно информации для понимания, чем является данные. В некоторых случаях можно что то вытащить из типа индексов (fk и pk) и ограничений constraints но в общем нет. Как понимать связь М-1-М? какую таблицу брать за базовую а какую второстепенной, т.е. что выбирать left join, right join или inner join? Да, для простых справочников, когда таблица является лепестком в графе связей 1-М можно 'смело' связывать такую таблицу, дублируя данные справочника по foreign key индексам, но опять - зачем? ведь при чтении уже не будет видно что использовался справочник.

    p.s. Я могу предположить что конечная цель у автора - работа со случайными данными (много мелких проектов, написанных разными людьми с сильно оотличающимися подходами к разработке и способам хранения данных) и извлечение из них осмысленных, к примеру в заранее определенном формате
    Когда то давно у меня в дипломной или рядом была проект, в котором в качестве доп инструмента была простая самописная утилита, ее натравливаешь на очередную базу с неизвестной структурой, она проводила простенький анализ структуры и выдавала в интерфейсе таблицы поля и показывала короткий брифинг по каждому выбранному полю (тип связи и пример данных там хранящихся), цель утилиты - указать таблицы и поля, из которых дальше будет извлекаться данные (т.е. дать интерпретацию этим данным). Без этой утилиты работа по определению какое поле чем является достаточно муторная, в имеющихся приложениях по работе с бд нужно много кликать, запускать хоть и заранее написанные запросы и т.п. Может вам лучше это состряпать? Я искал и не нашел, готовые универсальные решения слишком сложны (а смысл в простоте интерфейса).

    в c# есть унифицированный инструмент по подключению к базам данных - ado.net (вся возня - в построителе connection string, плюс таскать с собой по больше драйверов от разных бд), плюс есть системный odbc (уже устарел но для старых баз данных это иногда единственный способ подключения) для которого есть поддержка ado.net
    Ответ написан
    1 комментарий
  • Как получить всю БД в виде csv?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Задача недоопределена.

    Например, под термином CSV можно понимать как файл единой структуры (причём как plain-структуры, так и с сериализованными данными), так и несколько конкатенированных (как в процессе вывода, так и явно по окончании вывода) файлов, каждый из которых имеет свою структуру (да ещё и дополнительная информация там может храниться, вроде имён таблиц и имён/типов полей).

    Каждый из вариантов предполагает свой код для решения задачи (это если не обращать внимания на такую мелочь, что сама по себе запись в CSV в каждой СУБД делается тоже ну очень по-своему).

    А так - вот не вижу ну никакой проблемы. Лишь бы на той стороне обработки этого CSV был код, который правильно интерпретирует данные и корректно разложит их обратно по таблицам. Причём если идёт речь о создании универсального инструмента, то только в этом самом последнем моменте (вывод результата запроса в CSV) могут возникнуть хоть какие-то сложности. Остальное просто и плоско, как блин.

    Я не знаю их архитектуру и название таблиц заранее

    Хотя вот ещё одна точка, где могут возникнуть сложности. Теоретически все СУБД должны бы поддерживать INFORMATION_SCHEMA, всё же стандарт как бы описывает - и всё равно не всё там просто и очевидно.
    Ответ написан
    2 комментария
  • Как получить всю БД в виде csv?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    С джоинами будет сложновато, но со всем остальным:
    1. Определяешь тип БД (раз уже подключился - значит известен)
    2. В большинстве СУБД можно динамически получить список всех таблиц/коллекций (эту информацию можно получить из служебных таблиц, имя и структура которых известна заранее)
    3. По данным из п2 делаешь N запросов SELECT * from {tableName} (как в монге это сделать - не подскажу)
    И через DataReader читаешь таблицу и пишешь в csv.

    А ещё для некоторых субд могут быть уже готовые инструменты для экспорта данных.
    Например mysqldump, pg_dump, mongodump итд, которые как раз и делают вышеописанное.

    На счёт джоинов - никогда подобное не видел, и в общем случае такое сделать не получится.
    Ответ написан
    Комментировать
  • На чем лучше делать маленькое API?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Не asp, а asp net core.
    В целом - почему нет? Для маленьких апишек в 6й версии даже новый синтаксис появился: ASP NET Core minimal api
    Ответ написан
    1 комментарий
  • Почему string не равно true?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не пустая строка в python является True

    Неа. Непустая строка истинна в логическом контексте, но это не значит, что она равна True.
    Ответ написан
    3 комментария
  • Какие плюсы и минусы у Task и Thread?

    Простыми словами:

    Thread - это отдельный поток в котором вы хотите что-то выполнять параллельно от других потоков.
    (например чтобы не зависал интерфейс, вы запускаете вашу задачу в отдельном потоке)
    (например вы хотите задействовать все ядра процессора и запускаете несколько задач в нескольких параллельных потоках)

    Task - это обертка над Thread которая позволяет переиспользовать созданные потоки (Пул потоков).
    Переиспользовать потому-что создавать каждый раз Thread это очень долго и дорого.

    Task-и так же предоставляют дополнительный фишки как:
    - асинхронная модель (async/await),
    - учёт количества ядер процессора,
    - учёт простоя во время системных вызовов (сеть, файловая система и т.п.)

    В любом случае Task-и это лучшее решение.
    Ответ написан
    Комментировать
  • Почему при запросе объекта стиля, получается null?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    Как вариант, можно создать окно, в котором задать заранее определённые стили, задать им TargetType и это надо сделать. Задать каждому стилю уникальный ключ. Создать в Code Behind окна свойство с текущим стилем и его менять. К этому свойству можно прибиндиться TextBlock(ом). Можно всё это сделать красивее и т.д., но суть из примера будет ясна, думаю.

    Вот можно посмотреть как здесь предлагают Changing the styles at runtime in WPF

    <Window
        x:Class="Monitor.SomeWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:Monitor"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="SomeWindow"
        Width="800"
        Height="450"
        mc:Ignorable="d">
        <Window.Resources>
            <Style
                x:Key="BaseFontFamily"
                TargetType="TextBlock">
                <Setter Property="FontSize" Value="90" />
            </Style>
            <Style
                x:Key="Numbers1Style"
                BasedOn="{StaticResource BaseFontFamily}"
                TargetType="TextBlock">
                <Setter Property="Foreground" Value="LightCoral" />
            </Style>
            <Style
                x:Key="Numbers2Style"
                BasedOn="{StaticResource BaseFontFamily}"
                TargetType="TextBlock">
                <Setter Property="Foreground" Value="Bisque" />
            </Style>
        </Window.Resources>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <TextBlock
                Grid.Row="0"
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Style="{Binding TimeBlockStyle, RelativeSource={RelativeSource AncestorType=local:SomeWindow}}"
                Text="{Binding Path=RightTeam.TeamCounter, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
            <Button
                Grid.Row="1"
                Click="OnButtonClick" />
        </Grid>
    </Window>


    public partial class SomeWindow : Window
    {
        public static readonly DependencyProperty TimeBlockStyleProperty = DependencyProperty.Register(
            nameof(TimeBlockStyle), typeof(Style), typeof(SomeWindow), new PropertyMetadata(default(Style)));
    
        public Style TimeBlockStyle
        {
            get { return (Style)GetValue(TimeBlockStyleProperty); }
            set { SetValue(TimeBlockStyleProperty, value); }
        }
    
        public SomeWindow()
        {
            InitializeComponent();
            TimeBlockStyle = (Style)Resources["Numbers1Style"];
        }
    
        private void OnButtonClick(object sender, RoutedEventArgs e)
        {
            TimeBlockStyle = (Style)Resources["Numbers2Style"];
        }
    }
    Ответ написан
    5 комментариев
  • Почему при запросе объекта стиля, получается null?

    @AndromedaStar
    .Net - monkey
    Resources["NubmersStyle"] - опечатка. А опечатка случилась из-за магических слов. В таком стиле на C# стараются не писать.
    Ответ написан
  • Что лучше использовать, WPF или Winforms?

    Все visual studio от 2010 версии используют WPF. Думаю, технологии можно доверять,
    Windows forms лучше выбирать для приложений которые планируете запускать на старых системах. На новых, лучше WPF.
    WPF сложнее в изучении, но более гибкий в плане построения интерфейса + удобные биндинги.
    Технология развивается с 2006 года. За это время уже много для неё написали (контролы).
    Ответ написан
    Комментировать
  • Что лучше использовать, WPF или Winforms?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Для сложных проектов лучше использовать WPF
    Ответ написан
    4 комментария
  • Как сделать запуск приложения на linux без загрузок?

    @pfg21
    ex-турист
    написать скрипт для системд.
    стдоут приложения вывести на первую консоль.
    в мане системд есть описание как выводить.
    по вкусу пошаманить с getty чтобы вход с первой консоли не запрашивался.

    если ты про автозапуск приложения с графическим интерфейсом, то гугли "linux kiosk-mode" вариантов в море.
    Ответ написан
    2 комментария
  • Как искать элементы в xml без имени?

    @cicatrix
    было бы большой ошибкой думать
    Вопрос первый: а если ты их добавляешь динамически, чего ты ссылки на них не хранишь в массиве, например?
    Если по каким-то причинам ты так делать не хочешь, вопрос второй - тэг Content предназначен для указания... контента (содержимого) элемента, но никак не метки (имени). Для этого есть атрибут "Name"
    Ну а так:
    .Where(l => l.Content.Contains("EtalonName"));
    Ответ написан
    8 комментариев
  • Почему adsense не засчитывает контент?

    grandma_killa
    @grandma_killa
    Монетизация и прокрастинация
    У Adsense модерация стала серьезнее относиться к площадкам.

    Нужно больше уникальности, больше трафика и больше страниц на сайте. Очевидно, что Adsense не очень интересен сайт с 1,5 униками.
    Ответ написан
    Комментировать
  • Какие есть сторонние SMTP сервера?

    jamessvetsky
    @jamessvetsky
    Специалист по почтам и рассылкам
    Добрый день!
    Можно сделать почту на бесплатных Яндекс Коннекте или Майл ру для бизнеса, а письма отправлять через платный SMTP, например через SMTP BZ
    Ответ написан
    Комментировать
  • Как оптимально хранить часто вызываемые данные в django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Использовать кеш
    Ответ написан
    3 комментария
  • Есть ли альтернативa Visual Studio для C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    JetBrains Rider - платно (можно пиратить, но проще просто поставить VS .Net Desktop)
    Visual Studio Code - бесплатно но функционал слабее
    и далее:
    Sublime, Notepad++ - с плагинами
    ...
    Notepad и компиляция командной строкой

    ps что бы не охреневать от веса присмотритесь к настройкам инсталятора. если ставить только .Net Desktop, то совсем не страшно на самом деле. а новичку обычно больше ни чего не надо.

    мало того - все что сверх .Net Desktop, вменяемо не обслуживается ни в одной альтернативной среде. ну разве что веб направление в JetBrains Rider.. ну Visual Studio Code.. но новичку в VS Code думаю будет не уютно

    pps можете смело урезать стартовую конфигурацию до набора
    как на скрине
    PR832pt.png
    , остальное, пока не поймете зачем - оно и не надо
    Ответ написан
    Комментировать
  • Как установить связь Access и Python?

    Скорее всего у вас 64 битный питон и 32 битный access. Либо установить python x86, либо access 64.

    Наилучший вариант - не пытаться работать с Access
    Ответ написан
    Комментировать
  • Как сделать динамическое количество Q запросов?

    @gimntut
    Untiwe я доработал твой код.
    Вся хитрость в 2х звёздочках **
    def get_queryset(self):
            if not self.request.GET:
                return Posts.objects.all()#если нет параметров, просто возвращаем все посты
            keyword = self.request.GET.get('key')#получаем ключевое слово
            filters = Q()#создаем первый объект Q, что бы складывать с ним другие
            for key in ['author', 'name', 'text']:
                    value = self.request.GET.get(key)
                    if value:
                            filters |= Q(**{f'{key}__icontains': keyword})
            return Posts.objects.filter(filters)
    Ответ написан
    2 комментария
  • Как отследить полную загрузку отдельного элемента?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    Находите все новые картинки , на каждый вешаете обработчик события load. Как все картинки загрузятся -- делаете что-то.
    Ответ написан
    3 комментария
  • Смена пароля пользователя в Django?

    dauren101
    @dauren101 Автор вопроса
    Python, Django ,Vue.js
    def a_change_password(request):
        u = User.objects.get(username=request.user)
        if request.method == 'POST':
            form = ChangePasswordForm(request.POST)
            if form.is_valid():
                old_password = request.POST.get("old_password")
                new_pass = request.POST.get("new_password")
                new_pass_rep = request.POST.get("new_password_repeat")
                if check_password(old_password,u.password):
                    return HttpResponse('ok')
                else:
                    return HttpResponse('bad')
        else:
                form = ChangePasswordForm()
    
        return render(request, 'login/change_password.html',
                  {'form': form, 'user': u})
    Ответ написан
    Комментировать