как да формирате тази заявка за избор на mysql с помощта на python-2.7

Използвам база данни на Python-2.7 и mysql и искам да извлека данни от таблица student с помощта на оператор select чрез предаване на 2 или който и да е от 2 параметъра, както е по-долу-

SELECT * FROM student_details where student_city='some_City' or student_stream='Science' or both

параметрите ще бъдат предадени на тази функция, която е управлявала оператора SELECT.

Насоки/Помощ под всякаква форма, за да ме накара да разбера как мога да кодирам частта от клаузата where. Не искам да правя отделни запитвания.

Извинявам се, ако задавам въпроса неправилно или го повтарям. Благодаря предварително :)


person Pallavi Joshi    schedule 22.01.2016    source източник
comment
Как се свързвате с базата данни mysql с python?   -  person Brendan Abel    schedule 22.01.2016
comment
Значи искате превключвател, който променя "или" на "и"?   -  person Strawberry    schedule 22.01.2016
comment
@BrendanAbel - code mysql.connector.connect(user='abc',password='XXX',host = 'localhost',port = 'xyz', database='organisations',buffered=True).   -  person Pallavi Joshi    schedule 22.01.2016
comment
@Strawberry - Не съм сигурен дали разбрах въпроса ти. Но всичко, което искам, е да приема кой параметър е предаден и да го използвам съответно в клаузата WHERE. Така че докато се извиква действителната функция, човек може да изпрати само student_city или само student_stream или може да изпрати и двата параметъра   -  person Pallavi Joshi    schedule 22.01.2016
comment
Добре, значи искате да изградите заявката, като използвате само предадени параметри. Имплодирайте предадените параметри с „и“. Сигурен съм, че има много уроци за Python по този въпрос.   -  person Strawberry    schedule 22.01.2016


Отговори (3)


Опитах и ​​най-накрая това работи за мен-

 try:
        query = ("""SELECT * FROM student_details  WHERE """)
        if city is not '0' and Stream == '0':
              complete_query = query+("""student_city = %s""")

        elif Stream is not '0' and city == '0':
            complete_query = query+("""student_stream = %s""")

        else:
            complete_query = query+("""student_city = %s AND student_stream = %s""")

        if city is not '0' and Stream == '0':
            s_execute = self.cur2.execute(complete_query,(city,))

        elif Stream is not '0' and city == '0':
            s_execute = self.cur2.execute(complete_query,(Stream,))

        else:
            s_execute = self.cur2.execute(complete_query,(city),(Stream))
 except MySQLdb.Error as error:
                                print(error)

Беше нещо подобно на горното предложение. Благодаря на всички за напътствията.

person Pallavi Joshi    schedule 02.02.2016

използвайте обвивка на python около MySQL и използвайте execute(), за да стартирате каквото искате. За подробности следвайте тази връзка

http://www.tutorialspoint.com/python/python_database_access.htm

person armak    schedule 22.01.2016
comment
Знам, че питам как да формулирам клаузата WHERE, която жонглира между 2 параметъра, един от които може или не е незадължителен. - person Pallavi Joshi; 22.01.2016
comment
методът за изпълнение използва raw_query, просто предайте вашата заявка като низ. - person armak; 22.01.2016

Проверете тази тема на параметризирана заявка:

sql заявка за търсене с множество незадължителни параметри за търсене

Надяваме се, че това отговаря на вашето запитване :)

person Nirav Bajaj    schedule 22.01.2016