KeyError:'1,2' running Postgresql regexp_match() in Jupyter Notebook
KeyError:'1,2' running Postgresql regexp_match() in Jupyter Notebook
我正在使用 Jupyter notebook 运行 postgresql。 Python、postgres、pips 和 Jupyter 都是最新的。我已经能够加载 sql 和
%load_ext sql
并使用
连接到 postgres 数据库
%sqlpostgresql://postgres:postgres@localhost/analysis
Table 已创建并加载了一个用
成功加载的 csv
%%sql
CREATE TABLE crime_reports (
crime_id bigserial PRIMARY KEY,
date_1 timestamp with time zone,
date_2 timestamp with time zone,
street varchar(250),
city varchar(100),
crime_type varchar(100),
description text,
case_number varchar(50),
original_text text NOT NULL
);
COPY crime_reports (original_text)
FROM 'C:\YourDirectory\crime_reports.csv'
WITH (FORMAT CSV, HEADER OFF, QUOTE '"');
但是,这段代码
%%sql
SELECT crime_id,
regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')
FROM crime_reports;
运行s 在 pgAdmin 中成功 ,返回日期 but Jupyter 笔记本我得到这个错误:
KeyError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_10976/608277809.py in <module>
----> 1 get_ipython().run_cell_magic('sql', '', "SELECT crime_id,\n regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')\nFROM crime_reports;\n")
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
2417 with self.builtin_trap:
2418 args = (magic_arg_s, cell)
-> 2419 result = fn(*args, **kwargs)
2420 return result
2421
~\AppData\Local\Programs\Python\Python310\lib\site-packages\decorator.py in fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
233 fun.__name__ = func.__name__
234 fun.__doc__ = func.__doc__
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
~\AppData\Local\Programs\Python\Python310\lib\site-packages\decorator.py in fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
233 fun.__name__ = func.__name__
234 fun.__doc__ = func.__doc__
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
~\AppData\Local\Programs\Python\Python310\lib\site-packages\sql\magic.py in execute(self, line, cell, local_ns)
149 cell_params = {}
150 for variable in cell_variables:
--> 151 cell_params[variable] = local_ns[variable]
152 cell = cell.format(**cell_params)
153
KeyError: '1,2'
我已尝试信任笔记本,但仍然遇到同样的错误。
尝试替换这个:
regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')
有了这个:
regexp_match(original_text, '\d{{1,2}}\/\d{{1,2}}\/\d{{2}}')
可能是 python format
,你需要逃避你的 {}
s。
我正在使用 Jupyter notebook 运行 postgresql。 Python、postgres、pips 和 Jupyter 都是最新的。我已经能够加载 sql 和
%load_ext sql
并使用
连接到 postgres 数据库%sqlpostgresql://postgres:postgres@localhost/analysis
Table 已创建并加载了一个用
成功加载的 csv%%sql
CREATE TABLE crime_reports (
crime_id bigserial PRIMARY KEY,
date_1 timestamp with time zone,
date_2 timestamp with time zone,
street varchar(250),
city varchar(100),
crime_type varchar(100),
description text,
case_number varchar(50),
original_text text NOT NULL
);
COPY crime_reports (original_text)
FROM 'C:\YourDirectory\crime_reports.csv'
WITH (FORMAT CSV, HEADER OFF, QUOTE '"');
但是,这段代码
%%sql
SELECT crime_id,
regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')
FROM crime_reports;
运行s 在 pgAdmin 中成功 ,返回日期 but Jupyter 笔记本我得到这个错误:
KeyError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_10976/608277809.py in <module>
----> 1 get_ipython().run_cell_magic('sql', '', "SELECT crime_id,\n regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')\nFROM crime_reports;\n")
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
2417 with self.builtin_trap:
2418 args = (magic_arg_s, cell)
-> 2419 result = fn(*args, **kwargs)
2420 return result
2421
~\AppData\Local\Programs\Python\Python310\lib\site-packages\decorator.py in fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
233 fun.__name__ = func.__name__
234 fun.__doc__ = func.__doc__
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
~\AppData\Local\Programs\Python\Python310\lib\site-packages\decorator.py in fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
233 fun.__name__ = func.__name__
234 fun.__doc__ = func.__doc__
~\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
~\AppData\Local\Programs\Python\Python310\lib\site-packages\sql\magic.py in execute(self, line, cell, local_ns)
149 cell_params = {}
150 for variable in cell_variables:
--> 151 cell_params[variable] = local_ns[variable]
152 cell = cell.format(**cell_params)
153
KeyError: '1,2'
我已尝试信任笔记本,但仍然遇到同样的错误。
尝试替换这个:
regexp_match(original_text, '\d{1,2}\/\d{1,2}\/\d{2}')
有了这个:
regexp_match(original_text, '\d{{1,2}}\/\d{{1,2}}\/\d{{2}}')
可能是 python format
,你需要逃避你的 {}
s。