gpt4 book ai didi

python - PSQL - 如果列值等于特定字符串,如何过滤掉

转载 作者:行者123 更新时间:2023-11-29 12:43:11 26 4
gpt4 key购买 nike

我创建了一个数据库,其中包含名为 option 的列,其中值是 'Call'、'Put' 或 None 的 varchar。当我设置数据库时,如果没有 Call 或 Put,我将默认值设置为 None。

我正在尝试过滤掉包含“看涨”或“看跌”选项的行。但是,当我编写查询时

选择 *FROM 持股 hWHERE h.option != '调用'AND h.option != 'Put';

I get this error:
curr.execute('SELECT option FROM holdings WHERE option != 'Call';')
^
SyntaxError: invalid syntax

当我尝试使用 NOT LIKE '%Call%' 时出现此错误:

curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE '%Call%';')
NameError: name 'Call' is not defined

任何帮助将不胜感激

谢谢!

代码如下所示:

import psycopg2
import csv
conn = psycopg2.connect('dbname = db user = asmith')
curr = conn.cursor()
curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')
tups = curr.fetchall()
for tup in tups:
print tup

编辑:当我运行这两行时:

curr.execute('SELECT * FROM holdings h WHERE option = \'Call\' OR option = \'Put\';') 
curr.execute('SELECT * FROM holdings h WHERE option != \'Call\' AND option != \'Put\';')

第一个查询为我提供了带有 Call 或 Put 的所有行,但是当我运行第二个查询时我什么也得不到,尽管理论上它应该为我提供所有带有 None 选项的行。有谁知道这是为什么吗?

最佳答案

这里看起来像语法错误:

curr.execute('SELECT option FROM holdings h WHERE option NOT LIKE '%Call%';')

字符串 1 是 'SELECT option FROM holdings h WHERE option NOT LIKE ',用 ' 中断(在 %Call% 之前),然后一些名为 Call 的变量(您的编译器找不到)然后是 String 2 ';'

你必须像这样用反斜杠转义':

curr.execute('SELECT option FROM holdings AS h WHERE option NOT LIKE\'%Call%\';')

关于python - PSQL - 如果列值等于特定字符串,如何过滤掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com