#postgresql #python-3.6
#postgresql #python-3.6
Вопрос:
Я пытаюсь вставить empid в свою таблицу Postgres, проблема здесь в том, что я вижу, что начальный ноль отсутствует во всех случаях. Как я мог бы ее сохранить?
мой код на Python:
sql = "insert into emp (empid,name,sal) values (%s,%s,%s)"
data = (05599,xyz,10000)
cur.execute(sql, data)
Тип данных столбца Postgresql
empid --> character varying(5)
в таблице я вижу только 5599 вместо 05599. Как я мог бы сохранить начальный ноль при вставке / обновлении данных в таблицу?
Спасибо
Комментарии:
1. Я не знаю Python, но звучит так, как будто значения отправляются в базу данных в виде чисел, а не в виде строк.
Ответ №1:
Не уверен, как вы заставили этот код работать:
create table emp (empid varchar ,name varchar, sal numeric);
import psycopg2
con = psycopg2.connect("dbname=test host=localhost user=aklaver")
cur = con.cursor()
sql = "insert into emp (empid,name,sal) values (%s,%s,%s)"
data = (05599,xyz,10000)
^
SyntaxError: invalid token
# This works
data = ('05599', 'xyz' ,10000)
cur.execute(sql, data)
con.commit()
select * from emp;
empid | name | sal
------- ------ -------
05599 | xyz | 10000
Так как @a_horse_with_no_name предложил передать в виде строки.