При попытке вставить тестовые данные в мою БД с помощью приведенного ниже кода я получаю эту ошибку. Я знаю, что моя база данных настроена правильно и работает с моим приложением Flask, но я не могу заполнить базу данных значениями из моего MOCK_DATA.csv
файла
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column "content" does not exist
LINE 3: (content, rating, book_id, (SELECT user_id FROM user...
^
HINT: There is a column named "content" in table "reviews", but it cannot be referenced from this part of the query.
[SQL: --sql
INSERT INTO reviews VALUES
(content, rating, book_id, (SELECT user_id FROM users WHERE username=%(username)s))
--endsql]
[parameters: {'username': 'Brent'}]
Схема: таблица обзоров
CREATE TABLE IF NOT EXISTS reviews (
review_id SERIAL PRIMARY KEY,
content TEXT,
rating INTEGER,
user_id INTEGER REFERENCES users,
book_id INTEGER REFERENCES books
Схема: таблица пользователей
CREATE TABLE IF NOT EXISTS users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(255),
password VARCHAR(255)
seed.py
FILE = open("MOCK_DATA.csv")
reader = csv.reader(FILE)
firstline = True
for username, password, content, rating in reader:
# skip first line of csv file
if firstline:
firstline = False
continue
# fill users table
DB.execute(
"""--sql
INSERT INTO users (username, password) VALUES
(:username, :password) ON CONFLICT DO NOTHING
--endsql""", {
"username": username,
"password": generate_password_hash(password)
})
print("added user")
# add review for user
DB.execute(
"""--sql
INSERT INTO reviews VALUES
(content, rating, book_id,
(SELECT user_id FROM users WHERE username=:username))
--endsql""", {
"content": content,
"rating": rating,
"book_id": 288,
"username": username,
})
print("added review")
DB.commit()
MOCK_DATA .csv
username,password,content,rating
Brent,OoDQgc,"Sed vel enim sit amet nunc viverra dapibus. Nulla suscipit ligula in lacus. Curabitur at ipsum ac tellus semper interdum. Mauris ullamcorper purus sit amet nulla. Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.",1