How to insert either a value or the column default?
От | W. Matthew Wilson |
---|---|
Тема | How to insert either a value or the column default? |
Дата | |
Msg-id | CAGHfCUC7uVrqVN9pfKBG9Ei3HZAPZZRD-d1sOtqzex4nMX=dOA@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: How to insert either a value or the column default?
Re: How to insert either a value or the column default? Re: How to insert either a value or the column default? |
Список | pgsql-general |
I have a table that looks sort of like this: create table tasks ( task_id serial primary key, title text, status text not null default 'planned' ); In python, I have a function like this: def insert_task(title, status=None): .... and when status is passed in, I want to run a SQL insert statement like this: insert into tasks (title, status) values (%s, %s) but when status is not passed in, I want to run this SQL insert instead: insert into tasks (title, status) values (%s, default) I know how to pick the query with an if-clause in python, but I wish it were possible to do something like this: insert into tasks (title, status) values (%s, coalesce(%s, default)) I have tried different variations, but I keep getting syntax errors. Is there any way to do say: "if the value is not null, insert the value. Otherwise, insert the default value for this column" entirely in SQL? When there is just one optional column, it is not a big deal to use an if-clause in python. But there are numerous optional columns. I know I could build up lists of strings in python but I'm hoping there's a simpler way to do this in the query. But I have a hard time already getting other programmers to understand SQL injection attacks and if they see me building up SQL queries from strings, even though there's no risk of a SQL injection in this scenario, I still don't want to break my "no string interpolation" rule of thumb unless I absolutely have to. And I know I could switch to some gigantic library like SQLAlchemy, but I really don't want to. Any advice is welcome. Thanks in advance! Matt -- W. Matthew Wilson matt@tplus1.com http://tplus1.com
В списке pgsql-general по дате отправления: