A. B. Dinshaa Ответов: 1

Sql-запрос имеет проблемы из-за внешнего ключа " tod " из другой таблицы


SQL Query:

<pre lang="SQL">SELECT tod FROM Flights WHERE flno = 1;


Файл, из которого я вставляю SQL-запрос, является отдельным файлом *.ipynb jupyter notebook, а файл, в котором я создал таблицу, является отдельным файлом *.ipynb jupyter notebook, но оба они находятся в одной папке. Когда я запускаю таблицу рейсов, она отображает записи, у меня есть только 5 записей, а у нее-25 записей. Все записи повторяются 5 раз.

Таблица самолетов имеет внешний ключ из таблицы полетов, который является "tod", поэтому таблица самолетов создает проблемы при отображении результата вместо sql-запроса. Как это исправить?

Ошибка:

Файл "<ipython-input-40-7191c59c7b77>", строка 55
entrya_1 = (1,'воздух автобус 1, (Выберите Тод из рейсов, где flno = 1;), '250 км)
^

SyntaxError: недопустимый синтаксис


Знак ^ под 'D' из 'Тод'


Что я уже пробовал:

Попытался запустить SQL-запрос в том же файле, где создается таблица, но компилятор выдает ту же ошибку, остальное я не в состоянии выяснить.

CHill60

К сожалению, мне это совсем не ясно. Какова схема таблицы полетов?

A. B. Dinshaa

Рейсы(Фино: целое число, от: строки: строки, расстояние: число, отправление: время, прибывает: время, цена: целое число)


Самолет(aid: integer, aname: string, cruisingrange: integer)

MadMyche

Как насчет первичных и внешних ключей?

A. B. Dinshaa

Первичный ключ-это первый столбец таблицы по умолчанию, если они не объявлены, поэтому я не определил никакого первичного ключа. Вы хотите увидеть инструкцию create table?
Внешний ключ я объявил в одной таблице.
Есть одна таблица, которая содержит только составные ключи, но прямо сейчас я застрял в таблице внешних ключей.

MadMyche

Не имея всех деталей схемы, которая участвует, действительно трудно попытаться помочь вам. Наверное не помогает то что меня нет Юпитер адепт, но глядя на это с точки зрения SQL, просто не складывается

Flights( fino:     integer -- PK
       , from:     string
       , to:       string
       , distance: integer
       , departs:  time
       , arrives:  time
       , price:    integer
)

Aircraft( aid:           integer -- PK
        , aname:         string
        , cruisingrange: integer
)

SELECT tod
FROM   Flights
WHERE  flno = 1

A. B. Dinshaa

Эти двое точно такие же, как вы хотели видеть??

Garth J Lancaster

Мне кажется, что ваш вопрос должен быть

SELECT to From Flights WHERE fino = 1
... в таблице рейсов не имеют 'flno' и 'Тод' столбцы в данное определение, если только-&ГТ;Тод и фино-&ГТ;flno просто 'опечатки'

A. B. Dinshaa

"to" - это ключевое слово sql, поэтому его не используют. Я пытался, но Блокнот jupyter выдает ошибку.
Я определил время полета нет как flno' вместо 'Фино' и поле 'Тод' вместо 'В' в операторе create стол. Если ты хочешь, чтобы я изменился, я могу измениться. Что вы подразумеваете под "опечатками"?

A. B. Dinshaa

когда я сменил "Тод" на "К", он дал:

рядом с "to": синтаксическая ошибка

значит, это ключевое слово, и его нельзя использовать таким образом.

1 Ответов

Рейтинг:
0

MadMyche

Основываясь на предоставленной вами структуре таблицы

Flights( fino:     integer -- PK
       , from:     string
       , to:       string
       , distance: integer
       , departs:  time
       , arrives:  time
       , price:    integer
)
Aircraft( aid:           integer -- PK
        , aname:         string
        , cruisingrange: integer
)
Следующее будет недопустимым утверждением, так как нет никакого столбца с именем tod в Flights таблица; и, следовательно, синтаксическая ошибка.
SELECT tod FROM Flights WHERE fino = 1
--       ^ SyntaxError: invalid syntax


A. B. Dinshaa

В записной книжке jupyter, когда компилятор выдает ошибку, в ячейке записной книжки jupyter нет номера строки, чтобы точно проследить, где находится ошибка.

Как отследить в блокноте jupyter, на какой строке находится ошибка?

A. B. Dinshaa

Поскольку "to" - это ключевое слово в sql, я написал "tod", в котором d означает пункт назначения

A. B. Dinshaa

В моей программе jupyter notebook я использовал базу данных SQLite, сохранение файла abc.db которой отключено, потому что файл abc.db не кодируется UTF-8. Я следовал процедуре, написанной ниже, чтобы сделать его кодированным UTF-8, что делает его кодированным UTF-8 только один раз, и это только тогда, когда abc.db является новым, как только файл используется один или два раза, он начинает давать ошибки, которые я обсуждаю долго. Как только сохранение отключено, оно не может быть включено даже временно. Как сделать сохранение включенным еще раз и навсегда?


1. Откройте cmd и измените кодировку (chcp 65001)
2. Запустить sqlite3.exe из текущего окна
3. Измените кодировку (PRAGMA encoding="UTF-8";)
4. Создайте правильный сценарий UTF-8.


Файл базы данных не становится постоянно в формате UTF-8 постоянно.

A. B. Dinshaa

Я хочу, чтобы jupyter notebook автоматически обнаруживал файл "marks.db" в папке, чтобы везде, где я помещаю папку, содержащую программу, она продолжала работать. Как это сделать?

Сейчас ноутбук jupyter бросается в файле базы данных с помощью линии, указанному ниже:

база данных = r"C:\Users\DaBroths\Desktop\abc\marks.db"

Для того чтобы создать соединение я должен написать в отдельном файле подключения:

create_new_connection(Р"C:\Users\DaBroths\Desktop\abc\marks.db")

Это я также хочу заменить так, чтобы там, где я помещаю папку на компьютер, программа продолжала работать, не нужно было каждый раз менять путь к этой папке.