Query with sqlalchemy with and and or
First of all thank you for your help.
My problem is that I have to query the server with a lot of inputs. I am updating a web page that on the past only accept one input but now, i created a checkbox so the user can have more flexibility on the query:
query = session.query(table_name).filter(and_(*conditions) , or_(*multiple_choice_filter))
Where multiple choice is a list with letters like ["A", "B"]
And conditions are a list of conditions:
table_name.c.column_1.op('~*')(filter_1))
Where on the past, there weren't anything else apart from the initial conditions but now I want to add the checkbox.
Somebody now how to combine in the query the conditions from the past with the multiple_choice_filter?
Thank you!
python database sqlalchemy
add a comment |
First of all thank you for your help.
My problem is that I have to query the server with a lot of inputs. I am updating a web page that on the past only accept one input but now, i created a checkbox so the user can have more flexibility on the query:
query = session.query(table_name).filter(and_(*conditions) , or_(*multiple_choice_filter))
Where multiple choice is a list with letters like ["A", "B"]
And conditions are a list of conditions:
table_name.c.column_1.op('~*')(filter_1))
Where on the past, there weren't anything else apart from the initial conditions but now I want to add the checkbox.
Somebody now how to combine in the query the conditions from the past with the multiple_choice_filter?
Thank you!
python database sqlalchemy
Using OR in SQLAlchemy - the link in the answer will also help you with theand_
syntax you need.
– benvc
Nov 21 '18 at 14:36
add a comment |
First of all thank you for your help.
My problem is that I have to query the server with a lot of inputs. I am updating a web page that on the past only accept one input but now, i created a checkbox so the user can have more flexibility on the query:
query = session.query(table_name).filter(and_(*conditions) , or_(*multiple_choice_filter))
Where multiple choice is a list with letters like ["A", "B"]
And conditions are a list of conditions:
table_name.c.column_1.op('~*')(filter_1))
Where on the past, there weren't anything else apart from the initial conditions but now I want to add the checkbox.
Somebody now how to combine in the query the conditions from the past with the multiple_choice_filter?
Thank you!
python database sqlalchemy
First of all thank you for your help.
My problem is that I have to query the server with a lot of inputs. I am updating a web page that on the past only accept one input but now, i created a checkbox so the user can have more flexibility on the query:
query = session.query(table_name).filter(and_(*conditions) , or_(*multiple_choice_filter))
Where multiple choice is a list with letters like ["A", "B"]
And conditions are a list of conditions:
table_name.c.column_1.op('~*')(filter_1))
Where on the past, there weren't anything else apart from the initial conditions but now I want to add the checkbox.
Somebody now how to combine in the query the conditions from the past with the multiple_choice_filter?
Thank you!
python database sqlalchemy
python database sqlalchemy
edited Nov 19 '18 at 15:14
Ilja Everilä
24.3k33763
24.3k33763
asked Nov 19 '18 at 14:55
Borja Perez de GuzmanBorja Perez de Guzman
12
12
Using OR in SQLAlchemy - the link in the answer will also help you with theand_
syntax you need.
– benvc
Nov 21 '18 at 14:36
add a comment |
Using OR in SQLAlchemy - the link in the answer will also help you with theand_
syntax you need.
– benvc
Nov 21 '18 at 14:36
Using OR in SQLAlchemy - the link in the answer will also help you with the
and_
syntax you need.– benvc
Nov 21 '18 at 14:36
Using OR in SQLAlchemy - the link in the answer will also help you with the
and_
syntax you need.– benvc
Nov 21 '18 at 14:36
add a comment |
1 Answer
1
active
oldest
votes
I found how to do it.The point of my question is to chain AND with OR.
First, create the filters:
conditions =
for the and statement is very straight forward:
conditions.append(table_name.c.column_name_1.op('~*')(value_1))
conditions.append(table_name.c.column_name_2.op('~*')(value_2))
conditions.append(table_name.c.column_name_3.op('~*')(value_3))
query = session.query(table_name).filter(and_(*conditions)).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3)
Now, to chain conditions with OR and AND:
We use two different variables: one for the AND statement (exactly like above) and another other one like the next one:
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_4))# First possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_5))# Second possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_6))# Third possible value for the OR statement
and the query will be:
query = session.query(table_name).filter(and_(*conditions) , and_(or_(*filter_or_1))).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3 AND(column_name_4==value_4 OR column_name_4==value_5 column_name_4==value_6 ))
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53377213%2fquery-with-sqlalchemy-with-and-and-or%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I found how to do it.The point of my question is to chain AND with OR.
First, create the filters:
conditions =
for the and statement is very straight forward:
conditions.append(table_name.c.column_name_1.op('~*')(value_1))
conditions.append(table_name.c.column_name_2.op('~*')(value_2))
conditions.append(table_name.c.column_name_3.op('~*')(value_3))
query = session.query(table_name).filter(and_(*conditions)).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3)
Now, to chain conditions with OR and AND:
We use two different variables: one for the AND statement (exactly like above) and another other one like the next one:
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_4))# First possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_5))# Second possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_6))# Third possible value for the OR statement
and the query will be:
query = session.query(table_name).filter(and_(*conditions) , and_(or_(*filter_or_1))).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3 AND(column_name_4==value_4 OR column_name_4==value_5 column_name_4==value_6 ))
add a comment |
I found how to do it.The point of my question is to chain AND with OR.
First, create the filters:
conditions =
for the and statement is very straight forward:
conditions.append(table_name.c.column_name_1.op('~*')(value_1))
conditions.append(table_name.c.column_name_2.op('~*')(value_2))
conditions.append(table_name.c.column_name_3.op('~*')(value_3))
query = session.query(table_name).filter(and_(*conditions)).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3)
Now, to chain conditions with OR and AND:
We use two different variables: one for the AND statement (exactly like above) and another other one like the next one:
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_4))# First possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_5))# Second possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_6))# Third possible value for the OR statement
and the query will be:
query = session.query(table_name).filter(and_(*conditions) , and_(or_(*filter_or_1))).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3 AND(column_name_4==value_4 OR column_name_4==value_5 column_name_4==value_6 ))
add a comment |
I found how to do it.The point of my question is to chain AND with OR.
First, create the filters:
conditions =
for the and statement is very straight forward:
conditions.append(table_name.c.column_name_1.op('~*')(value_1))
conditions.append(table_name.c.column_name_2.op('~*')(value_2))
conditions.append(table_name.c.column_name_3.op('~*')(value_3))
query = session.query(table_name).filter(and_(*conditions)).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3)
Now, to chain conditions with OR and AND:
We use two different variables: one for the AND statement (exactly like above) and another other one like the next one:
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_4))# First possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_5))# Second possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_6))# Third possible value for the OR statement
and the query will be:
query = session.query(table_name).filter(and_(*conditions) , and_(or_(*filter_or_1))).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3 AND(column_name_4==value_4 OR column_name_4==value_5 column_name_4==value_6 ))
I found how to do it.The point of my question is to chain AND with OR.
First, create the filters:
conditions =
for the and statement is very straight forward:
conditions.append(table_name.c.column_name_1.op('~*')(value_1))
conditions.append(table_name.c.column_name_2.op('~*')(value_2))
conditions.append(table_name.c.column_name_3.op('~*')(value_3))
query = session.query(table_name).filter(and_(*conditions)).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3)
Now, to chain conditions with OR and AND:
We use two different variables: one for the AND statement (exactly like above) and another other one like the next one:
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_4))# First possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_5))# Second possible value for the OR statement
filter_or_1.append(table_name.c.column_name_4.op('~*')(value_6))# Third possible value for the OR statement
and the query will be:
query = session.query(table_name).filter(and_(*conditions) , and_(or_(*filter_or_1))).order_by(table_name.c.column_name_1)
Which is translated to:
SELECT * FROM table_name WHERE (column_name_1 == value_1 AND column_name_2 == value_2 AND column_name_3 == value_3 AND(column_name_4==value_4 OR column_name_4==value_5 column_name_4==value_6 ))
answered Nov 26 '18 at 13:40
Borja Perez de GuzmanBorja Perez de Guzman
12
12
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53377213%2fquery-with-sqlalchemy-with-and-and-or%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Using OR in SQLAlchemy - the link in the answer will also help you with the
and_
syntax you need.– benvc
Nov 21 '18 at 14:36