roserek Temat założony przez niniejszego użytkownika |
[opencv] Wysyłanie wektorów do bazy danych MySQL z pominięciem stringa » 2013-07-16 15:19:56 Witam. To znowu ja :) Próbując udoskonalić moją aplikację chcę aby kopiowała wektory bezpośrednio do mysql z pominięciem stringa, czy to w ogóle jest możliwe ???
FileStorage fs( ".yml", FileStorage::WRITE + FileStorage::MEMORY );
Ptr < FaceRecognizer > model0 = createmyfisherRecognizer(); model0->train( images, labels );
model0->save( fs );
void myfisher::save( FileStorage & fs ) const { static char * host = "localhost"; static char * user = "root"; static char * password = ""; static char * sql_db = "fisher"; static unsigned int sql_port = NULL; static char * opt_socket = NULL; static unsigned int sql_flags = 0; static MYSQL * sock; sock = mysql_init( NULL ); if( mysql_real_connect( sock, host, user, password, sql_db, sql_port, opt_socket, sql_flags ) ) cout << "Poprawnie polaczyles sie z baza danych" << endl; else cout << "Blad w polaczeniu z baza danych" << endl; fs << "num_components" << _num_components; fs << "mean" << _mean; fs << "eigenvalues" << _eigenvalues; writeFileNodeList( fs, "projections", _projections ); fs << "labels" << _labels; string buf = fs.releaseAndGetString(); fs.release(); string zapytanie = "insert into baa values (\"" + buf + "\")"; if( !mysql_query( sock, zapytanie.c_str() ) ) cout << "Poprawnie dodano" << endl; else cout << "Blad przy zapisywaniu" << endl; }
Powyżej zamieściłem kod którego to dotyczy. W tej chwili działa to w ten sposób że wszystko jest zapisywane do zmiennej fs ( Filestorage ), później konwertowane na stringa i dopiero w takiej formie wrzucane do bazy danych. Wiadomo że program działał by wiele szybciej jeśli bezpośrednio było by kopiowane z pominięciem stringa do bazy danych. |
|
DejaVu |
» 2013-07-16 15:39:32 Popraw temat tak, aby zawierał jakieś sensowne informacje. Aby dodawać cokolwiek do bazy danych musisz wysyłać do niej zapytania. |
|
roserek Temat założony przez niniejszego użytkownika |
» 2013-07-16 15:45:34 Wiem. Zapytanie jest i do bazy danych dodaje, bardziej chodzi mi o to aby skrócić kod (pominąć stringa itd), wszystko widać w kodzie wyżej. Jeśli w ogóle jest to możliwe... |
|
DejaVu |
» 2013-07-16 16:50:44 Jedyną drogą komunikacji z bazą danych jest wysyłanie do niej zapytań. |
|
pekfos |
» 2013-07-16 16:55:14 Można, co najwyżej, wywalić zmienną buf i pobierać dane od razu przy składaniu zapytania. |
|
roserek Temat założony przez niniejszego użytkownika |
» 2013-07-17 09:38:18 A co myślicie o napisaniu klasy ( funkcji ) na bazie "FileStorage" w której to od razu wysyłał bym dane do mysql ??? Można by zrobić w sposób który mówi pekfos ale ja chcę jeszcze po drodze formatować ten ciąg znaków. |
|
DejaVu |
» 2013-07-17 12:44:41 Nie to jest przedmiotem dyskusji. Nie ma innej drogi komunikacji z bazą danych niż wysyłanie zapytań. Jeżeli chcesz sobie pisać klasę do 'wygodnego' wysyłania zapytań to już jest Twoja wola, jednak nie ma opcji, abyś ominął potrzebę generowania zapytania SQL. Temat zamykam, bo odpowiedź na postawione pytanie w temacie uzyskałeś. |
|
roserek Temat założony przez niniejszego użytkownika |
» 2013-07-17 13:43:14 Nie to jest przedmiotem dyskusji... Ja nie pytam się JAK WYSYŁAĆ COŚ DO MYSQL, wtedy odpowiedz by była za pomocą zapytania. Ale w kodzie wyraźnie jest zapytanie i napisałem że do bazy danych wysyłam bez problemu. W temacie jest również napisane jak wysłać wektor z pominięciem stringa. A na to pytanie jednoznacznej odpowiedzi nie dostałem . |
|
« 1 » 2 |