В настоящее время я работаю над веб-сайтом, используя html, flask, sqlite3 и Python.
В моем коде Python я запускаю этот SQL-запрос:
profile_rows = db.execute("SELECT * FROM profile WHERE profile_id = :profile_id", profile_id=session["user_id"])
в канале фласка я вижу, что он работает нормально и правильно вставляет идентификатор:
SELECT * FROM Profile WHERE Profile_id = 11
Запрос не возвращает строк, как следовало бы. он действует так, как будто в базе данных нет строки.
если вместо этого я запускаю код, используемый моей программой:
SELECT * FROM profile WHERE profile_id = 11
через «phpLiteAdmin v1.9.7.1» непосредственно в базе данных я получаю правильные строки (те, которые находятся в базе данных и имеют Profile_id 11).
Как такое может случиться? Я напрямую скопировал запрос, который использовался Python (из фида), в phpLiteAdmin, поэтому он не может выдать другой результат. но это так!!!. пожалуйста, помогите.
Если это поможет: я знаю, что запрос не возвращает строку, потому что я пробовал следующие вещи:
1
if len(profile_rows) == 0:
return render_template("frontpage.html", warning="there are no rows in the db!")
возвращает предупреждающее сообщение
2
if profile_rows[0]["job"] is None:
return redirect("/update_profile")
возвращает: «IndexError: индекс списка вне диапазона»
3
< /blockquote>
return render_template("frontpage.html", warning="row count: " + len(profile_rows))
возвращает предупреждение «количество строк: 0»
со всеми остальными запросами в моем коде это работает нормально. только этот нет
репродуктивный пример:
Python:
import os
import sys
import hashlib, binascii, os
import time
from functools import wraps
from cs50 import SQL
from flask import Flask, flash, jsonify, redirect, render_template, request, session
from flask_session import Session
from tempfile import mkdtemp
from werkzeug.exceptions import default_exceptions, HTTPException, InternalServerError
from werkzeug.security import check_password_hash, generate_password_hash
db = SQL("sqlite:///yourdatabase.db")
@app.route("/profile")
def profile():
profile_rows = db.execute"SELECT * FROM profile WHERE profile_id = :profile_id", profile_id="1")
if len(profile_rows) == 0:
return render_template("profile.html", warning="row count: " + len(profile_rows))
return render_template("profile.html")
HTML:
Profile
{% if warning != NULL %}
Warning! {{ warning }}
{% endif %}
SQLite3:
CREATE TABLE 'profile' ('profile_id' integer PRIMARY KEY NOT NULL, 'title' varchar(150), 'text' varchar(15000), 'job' varchar(100), 'area' varchar(150))
INSERT INTO "profile" ("profile_id","title","text","job","area") VALUES ('1','Hello world,','test','job','workfield')
Подробнее здесь: https://stackoverflow.com/questions/626 ... -query-why
SQL-запрос через Python возвращает результаты, отличные от прямого SQL-запроса. Почему? ⇐ Python
Программы на Python
1737655656
Гость
В настоящее время я работаю над веб-сайтом, используя html, flask, sqlite3 и Python.
В моем коде Python я запускаю этот SQL-запрос:
profile_rows = db.execute("SELECT * FROM profile WHERE profile_id = :profile_id", profile_id=session["user_id"])
в канале фласка я вижу, что он работает нормально и правильно вставляет идентификатор:
SELECT * FROM Profile WHERE Profile_id = 11
Запрос не возвращает строк, как следовало бы. он действует так, как будто в базе данных нет строки.
если вместо этого я запускаю код, используемый моей программой:
SELECT * FROM profile WHERE profile_id = 11
через «phpLiteAdmin v1.9.7.1» непосредственно в базе данных я получаю правильные строки (те, которые находятся в базе данных и имеют Profile_id 11).
Как такое может случиться? [b]Я напрямую скопировал запрос, который использовался Python (из фида), в phpLiteAdmin[/b], поэтому он не может выдать другой результат. [b]но это так!!![/b]. пожалуйста, помогите.
Если это поможет: я знаю, что запрос не возвращает строку, потому что я пробовал следующие вещи:
1
if len(profile_rows) == 0:
return render_template("frontpage.html", warning="there are no rows in the db!")
возвращает предупреждающее сообщение
2
if profile_rows[0]["job"] is None:
return redirect("/update_profile")
возвращает: «IndexError: индекс списка вне диапазона»
3
< /blockquote>
return render_template("frontpage.html", warning="row count: " + len(profile_rows))
возвращает предупреждение «количество строк: 0»
[b]со всеми остальными запросами в моем коде это работает нормально. только этот нет[/b]
[b]репродуктивный пример:[/b]
Python:
import os
import sys
import hashlib, binascii, os
import time
from functools import wraps
from cs50 import SQL
from flask import Flask, flash, jsonify, redirect, render_template, request, session
from flask_session import Session
from tempfile import mkdtemp
from werkzeug.exceptions import default_exceptions, HTTPException, InternalServerError
from werkzeug.security import check_password_hash, generate_password_hash
db = SQL("sqlite:///yourdatabase.db")
@app.route("/profile")
def profile():
profile_rows = db.execute"SELECT * FROM profile WHERE profile_id = :profile_id", profile_id="1")
if len(profile_rows) == 0:
return render_template("profile.html", warning="row count: " + len(profile_rows))
return render_template("profile.html")
HTML:
Profile
{% if warning != NULL %}
[b]Warning![/b] {{ warning }}
{% endif %}
SQLite3:
CREATE TABLE 'profile' ('profile_id' integer PRIMARY KEY NOT NULL, 'title' varchar(150), 'text' varchar(15000), 'job' varchar(100), 'area' varchar(150))
INSERT INTO "profile" ("profile_id","title","text","job","area") VALUES ('1','Hello world,','test','job','workfield')
Подробнее здесь: [url]https://stackoverflow.com/questions/62610610/sql-query-via-python-returns-different-results-than-direct-sql-query-why[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия