sqlalchemy vs pgadmin查询工具:WITH INSERT INTO SELECT

时间:2018-11-24 18:39:32

标签: python postgresql sqlalchemy

我陷入一个非常简单的问题。我按以下方式运行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数据库中,因为有很多数据。

我想念什么?

0 个答案:

没有答案