Я получаю следующую ошибку, когда пытаюсь вставить новую строку в таблицу с помощью sqlalchemy. Я вижу эту ошибку только при попытке вставить новую строку. Я могу запросить существующие строки без проблем.
ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'builtin_function_or_method' [SQL: 'INSERT INTO beaches (id, beach_name, lat, long, beach_description) VALUES (%(id)s, %(beach_name)s, %(lat)s, %(long)s, %(beach_description)s)'] [parameters: {'lat': 45.01, 'beach_description': 'some stuff here', 'id': <built-in function id>, 'long': 45.01, 'beach_name': 'test'}] (Background on this error at: http://sqlalche.me/e/f405)
Это код, в котором я определяю класс "пляж" в моем файле моделей.
class Beach(db.Model):
__tablename__ = 'beaches'
id = db.Column(db.Integer, primary_key=True)
beach_name = db.Column(db.String(256))
lat = db.Column(db.Numeric)
long = db.Column(db.Numeric)
beach_description = db.Column(db.String(256))
def __init__(self, id, beach_name, lat, long, beach_description):
self.id = id
self.beach_name = beach_name
self.lat = lat
self.long = long
self.beach_description = beach_description
Это код, в котором я создаю экземпляр класса и пытаюсь вставить его в базу данных.
beach_name = "test"
lat = 45.01
long = 45.01
beach_description = "some stuff here"
new_beach = Beach(id, beach_name, lat, long, beach_description)
db.session.add(new_beach)
db.session.commit()
Это схема таблицы, в которую я пытаюсь вставить. Я использую Postgres.
CREATE TABLE beaches (
id SERIAL PRIMARY KEY,
beach_name text,
lat double precision,
long double precision,
beach_description text
);
Существует s имилар-выглядящий пост , где комментатор предлагает удалить «id» при создании экземпляра класса. Для меня это было бы похоже на код ниже. Я пробовал этот вариант, и я получаю ту же ошибку.
beach_name = "test"
lat = 45.01
long = 45.01
beach_description = "some stuff here"
new_beach = Beach(beach_name, lat, long, beach_description)
db.session.add(new_beach)
db.session.commit()
Несмотря на то, что приведенная выше рекомендация не работает, я полагаю, что проблема где-то с автоинкрементным столбцом id в моей таблице. Спасибо за любой совет!