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 шт):

Автор решения: Roman Konoval

У real точность 6 десятичных знаков, что и наблюдаете.

Пробуйте другие числовые типы - decimal или double precision.

Не работает с другими типами, вероятно, потому, что вы не удалили вручную таблицу. А ваш код ее не пересоздает, если она уже есть и тип у вас остался от самого первого создания таблицы, т.е. real. Проверить типы полей в таблице можно в psql командой \d messages.

→ Ссылка