我陷入一个非常简单的问题。我按以下方式运行sql脚本:
WITH r AS ( SELECT m.*, ROW_NUMBER()
OVER (PARTITION BY word ORDER BY freq DESC) AS rn FROM raw_words AS m)
INSERT INTO preprocessed_words(word, pos, lemma, freq)
SELECT r.word, r.pos, r.lemma, r.freq FROM r where r.rn=1
这基本上删除重复的行并将数据保存到另一个表。然后,使用查询工具在pgAdmin 4中运行它,表preprocess_words
已成功填充。但是,然后我尝试在脚本中运行:
sql = """
WITH r AS ( SELECT m.*, ROW_NUMBER() OVER (PARTITION BY word ORDER BY freq DESC) AS rn FROM raw_words AS m)
INSERT INTO preprocessed_words(word, pos, lemma, freq) SELECT r.word, r.pos, r.lemma, r.freq FROM r where r.rn=1
"""
from sqlalchemy import create_engine
engine = create_engine('postgresql://'+username+':'+password+'@'+hostname + ':' + port + '/'+database)
connection = engine.connect()
connection.execute(sql)
我的表preprocess_words
结果为空。如果我尝试使用简单的脚本,例如:
sql = """INSERT INTO preprocessed_words(word, pos, lemma, freq) VALUES ('word', 'pos', 'lemma', 0);"""
有效。 我也尝试更新sqlalchemy,但无济于事。
我需要sqlalchemy,因为我将pandas to_sql
与sqlalchemy引擎一起使用。我也将表插入到sql数据库中,因为有很多数据。
我想念什么?