основная проблема с нулевой вставкой / обновлением в python и postgresql

#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 предложил передать в виде строки.