Latest posts on Авторизация python+ cx_oracle topichttps://python.su/forum/topic/28877/2015-12-21T01:04:08+02:00Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-21T01:04:08+02:00brutalsuperman156247<blockquote><em>JOHN_16</em><br/></blockquote>Спасибо, уже разобрался. Проблема была в том что считывало в поле ввода user11 а для сравнения с базы брало user11____ Подчеркивание ето пробелы.
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T23:40:07+02:00JOHN_16156246<blockquote><em>brutalsuperman</em><br/>А что за переменная n? И как я понял второй pw - пароль? </blockquote>n из вашего примера, pw пароль из БД<blockquote><em>brutalsuperman</em><br/>Меня больше интересует cx_oracle, так как работаю с Oracle, а mysql под запретом)</blockquote>Интернет в помощь - офиц.документация и гугл. И да там на английском скорее всего все.<br/><br/>А то что в письме написали - метод подстановки другой в cx_oracle:<br/><blockquote>cx_Oracle.paramstyle<br/><br/> String constant stating the type of parameter marker formatting expected by the interface. Currently ‘named’ as in ‘where name = :name’.<br/></blockquote><blockquote>Часть II. Запросы с параметрами.<br/>——————————–<br/><br/> Согласно спецификации Python Database API 2.0, для выполнения запросов<br/> с параметрами каждый модуль должен реализовывать переменную<br/> paramstyle, которая определяет каким образом будут передаваться<br/> параметры запросов. Текущая версия cx_Oracle(3.0) поддерживает режим<br/> ‘named’, то есть в модуле установлена переменная<br/> cx_Oracle.paramstyle='named' и можно создавать конструкции в запросах<br/> в виде:<br/><br/> select * from all_users where USERNAME LIKE :S<br/><br/> При этом связывание параметров запроса со значениями можно можно<br/> выполнить двумя способами:<br/> * Именованный параметeр метода execute:<br/><br/> cursor2.execute(“select * from all_users where USERNAME LIKE :S ”,S='S%')<br/> * Словарь {':переменная':значение,…}<br/><br/> cursor2.execute(“select * from all_users where USERNAME LIKE :S ”,{':S':'S%'})<br/></blockquote>
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T11:55:05+02:00brutalsuperman156209<blockquote><em>JOHN_16</em><br/><div class="code"><pre>cursor.execute(“select user_password from users WHERE user_name=?”, (username,) )<br/>pw = cursor.fetchone()<br/>if pw and pw == n:<br/> ...</pre></div></blockquote><br/>А что за переменная n? И как я понял второй pw - пароль? <blockquote><em>JOHN_16</em><br/>По теме БД? В моем блоге найдите запись про Sqlite3, вам будет полезна. В остальном не подскажу ибо не осведомлен.</blockquote><br/><blockquote><em>JOHN_16</em><br/>По теме БД? В моем блоге найдите запись про Sqlite3, вам будет полезна. В остальном не подскажу ибо не осведомлен.</blockquote><br/>Меня больше интересует cx_oracle, так как работаю с Oracle, а mysql под запретом)
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T11:09:57+02:00JOHN_16156208<strong>brutalsuperman</strong><br/>По теме БД? В моем блоге найдите запись про Sqlite3, вам будет полезна. В остальном не подскажу ибо не осведомлен.
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T10:25:17+02:00brutalsuperman156206Спасибо. Может посоветуете что-то почитать? Желательно с примерами<br/>
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T09:59:22+02:00JOHN_16156204примерно так:<br/><div class="code"><pre><span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="err">“</span><span class="n">select</span> <span class="n">user_password</span> <span class="kn">from</span> <span class="nn">users</span> <span class="nn">WHERE</span> <span class="nn">user_name</span><span class="o">=</span><span class="err">?”</span><span class="p">,</span> <span class="p">(</span><span class="n">username</span><span class="p">,)</span> <span class="p">)</span>
<span class="n">pw</span> <span class="o">=</span> <span class="n">cursor</span><span class="o">.</span><span class="n">fetchone</span><span class="p">()</span>
<span class="k">if</span> <span class="n">pw</span> <span class="ow">and</span> <span class="n">pw</span> <span class="o">==</span> <span class="n">n</span><span class="p">:</span>
<span class="o">...</span>
</pre></div>
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T09:02:14+02:00brutalsuperman156201<blockquote><em>JOHN_16</em><br/>Во первых, код надо постить на форумах в тегах code, иначе отступы пропадают и ваш код можно и не понять.Во вторых, у вас ошибка - вы делаете два запроса одним и тем же курсором и после этого пытаетесь получить результат первого запроса,в то время как в курсоре лежит результат последнего запроса.В третьих, вы в целом не правильно решаете задачу - зачем опрашивать ВСЕ записи о пользователях и паролях, что бы потом в цикле перебирать? Вам нужно сделать запрос в котором вы уже выберите пользователя, и потом проверять сходство пароля.В четверых, держать пароли в базе в открытом виде это не безопасно, может это ваш домашний проект и это не столь играет роли, но на будущее помните. что современный стандарт это держать в базе “подсоленую” хэш сумму пароля</blockquote><br/><div class="code"><pre> con = cx_Oracle.connect('test/root@localhost')<br/> cursor = con.cursor()<br/> cursor.execute("select user_name,user_password from users") <br/> <br/> for i,n in cursor.fetchall():<br/> <br/> if username == i:<br/> if password == n:<br/> QtGui.QMessageBox.information(self, 'BOOYA!', 'Success!!')<br/> self.close()<br/> self.mainw = Main()<br/> self.mainw.show()<br/> <br/> else:<br/> QtGui.QMessageBox.warning(self, 'Dang it!', 'Password incorrect...')<br/> return</pre></div><br/>Два запроса я не делаю, просто изначально не мог понять как работает и пытался прикрутить каунтер. По поводу как хранятся пароли, сильно не переживайте, приложение не выйдет в свет, но за совет спасибо.<br/><blockquote>Вам нужно сделать запрос в котором вы уже выберите пользователя, и потом проверять сходство пароля</blockquote>А вот здесь можно поподробней, я не понял как выбирать.<br/>
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T05:26:38+02:00JOHN_16156197Во первых, код надо постить на форумах в тегах code, иначе отступы пропадают и ваш код можно и не понять.<br/>Во вторых, у вас ошибка - вы делаете два запроса одним и тем же курсором и после этого пытаетесь получить результат первого запроса,в то время как в курсоре лежит результат последнего запроса.<br/>В третьих, вы в целом не правильно решаете задачу - зачем опрашивать ВСЕ записи о пользователях и паролях, что бы потом в цикле перебирать? Вам нужно сделать запрос в котором вы уже выберите пользователя, и потом проверять сходство пароля.<br/>В четверых, держать пароли в базе в открытом виде это не безопасно, может это ваш домашний проект и это не столь играет роли, но на будущее помните. что современный стандарт это держать в базе “подсоленую” хэш сумму пароля
Общий :: Базы данных :: Авторизация python+ cx_oracle
2015-12-20T03:57:09+02:00brutalsuperman156195Запускаю програму, перехожу в форму авторизации нажимаю кнопку логин(после ввода данных) програма виснет. Как мне считать данные о пользователях?<br/><br/><br/><br/> con = cx_Oracle.connect('test/root@localhost')<br/> cursor = con.cursor()<br/> cursor.execute(“select user_name,user_password from users”) <br/> counter = cursor.execute(“SELECT COUNT(*) FROM users”) <br/> for i,n in cursor.fetchall():<br/> <br/> if username == i:<br/> if password == n:<br/> QtGui.QMessageBox.information(self, ‘BOOYA!’, ‘Success!!’)<br/> self.close()<br/> self.mainw = Main()<br/> self.mainw.show()<br/> <br/> else:<br/> QtGui.QMessageBox.warning(self, ‘Dang it!’, ‘Password incorrect…’)<br/> return