SQL-запрос через Python возвращает результаты, отличные от прямого SQL-запроса. Почему?Python

Программы на Python
Ответить
Гость
 SQL-запрос через Python возвращает результаты, отличные от прямого SQL-запроса. Почему?

Сообщение Гость »

В настоящее время я работаю над веб-сайтом, используя 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»