Использование «like» в курсоре / запросе с параметром в python (django)

Сделайте вызов API api функцией. попробуйте это:

constructor() {
  super();

  this.state = {
    meme: {},
    num: 6
  };

}

componentDidMount() {
  fetchFromAPI(this.state.num);
}

let fetchFromAPI = (num)=>{

this.APIURL = `http://meme.com/${num}`;

   fetch(this.APIURL)
    .then(resp => resp.json())
    .then(data => {
      console.log(data);
      if (data) {
        this.setState({
          meme: data
        });
      }

      console.log(this.state.meme);
    });

}

nextPic = () => {
  if (this.state.num > this.state.meme.totalMemes) {
    this.setState({
      num: 1
    });
  } else {
    this.setState({
      num: this.state.num + 1
    });
    console.log(this.state.num);
  }
   fetchFromAPI(this.state.num);
};

render() {
  return (
    <div>
      <h1>{this.state.meme.title}</h1>
      <img key={this.state.num} src={this.state.meme.encodedurl} />
      <button onClick={this.nextPic}>Next</button>
    </div>
  );
}

Я не проверял это, но похоже, что это будет работать.

6
задан pirho 26 February 2018 в 08:24
поделиться

2 ответа

Во-первых, почему Вы не использующий Django ORM для этого?

MyClass.objects.filter( aField__contains=var1, secondField__exact=var2 )

Во-вторых, убедитесь, что Вы получаете SQL, который Вы ожидаете.

stmt= "select... afield like '%%%s%%' and secondfield = '%s'..." % ( var1, var2 )
print stmt
cursor.execute( stmt )

В-третьих, Ваш метод имеет дыру в системе безопасности, названную Атакой с использованием кода на SQL. Вы действительно не должны делать SQL как это.

Если абсолютно необходимо сделать вещи вне ORM Django, необходимо использовать, связывают переменные в запросе, не представляют замену в виде строки. См. http://docs.djangoproject.com/en/dev/topics/db/sql/#performing-raw-sql-queries.

9
ответ дан 8 December 2019 в 12:22
поделиться

можно ли взломать строку '%' в строку поиска?

var1 = '%' + var1 + '%'

then query normally:

cursor.execute("select col1, col2 
                    from my_tablem                     where afield like %s
                    and secondfield = %s
                    order by 1 desc " , [var1, var2] )
7
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: