Python и Postgresql
Пишу небольшой проектик для себя. В нем я использую Postgresql(psycorg2). При попытке добавить вещественные число в базу, оно округляется до первых шести знаков. Пример:
12345678.12345 - > 12345700.0.
Перепробовал все типы: real, numeric, double desision, явно указывал точность, удалял бд и заново создавал. Числа как округлялись, так и продолжают округляться. Может кто-нибудь уже сталкивался с подобной проблемой? Заранее спасибо!
Таблицу создаю так:
cur.execute("CREATE TABLE IF NOT EXISTS messages (name TEXT NOT NULL, text TEXT NOT NULL, time REAL)").
Добавляю запись:
cursor.execute("INSERT INTO messages (name, text, time) VALUES (%s, %s, %s)", ("Pavel", "Hello", 12345678.12345))
В базе оказывается
name: pavel,
text: Hello,
time: 12345700.0
Мне важна точность, а число почему-то сокращается
Ответы (1 шт):
У real точность 6 десятичных знаков, что и наблюдаете.
Пробуйте другие числовые типы - decimal или double precision.
Не работает с другими типами, вероятно, потому, что вы не удалили вручную таблицу. А ваш код ее не пересоздает, если она уже есть и тип у вас остался от самого первого создания таблицы, т.е. real. Проверить типы полей в таблице можно в psql командой \d messages.