小编Iva*_*vin的帖子

NotImplementedError: executemany 仅针对简单的 INSERT 语句实现

我尝试使用 sqlalchemy 通过 Pandas 附加我的 vertica(SQL 类型)表

import pandas as pd
import sqlalchemy as sa
Run Code Online (Sandbox Code Playgroud)

为vertica创建引擎:

def get_engine(base):
    engine = sa.create_engine("{sys}+{dri}://{user}:" + \
                               "{password}@{host}:{port}/{database}".format(**login[base]))
    return engine
engine = get_engine('vertica')
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,一个简单的查询:

table = '***'

sql =\
'''
select *
from public.{table}
'''.format(table=table)

connection = engine.connect()
data = pd.read_sql(sql, connection)
connection.close()
Run Code Online (Sandbox Code Playgroud)

数据不为空:

print(len(data))
569955
Run Code Online (Sandbox Code Playgroud)

并尝试写入同一张表:

fields = list(data.columns)
connection = engine.connect()
data.to_sql(table, connection, schema='public', index=False, if_exists='append', chunksize=30000,
            dtype={fields[0]:sa.types.Integer,
            fields[1]:sa.types.VARCHAR,
            fields[2]:sa.types.Integer,
            fields[3]:sa.types.Integer,
            fields[4]:sa.types.Integer,
            fields[5]:sa.types.VARCHAR,
            fields[6]:sa.types.VARCHAR,
            fields[7]:sa.types.VARCHAR,
            fields[8]:sa.types.VARCHAR,
            fields[9]:sa.types.VARCHAR,
            fields[10]:sa.types.VARCHAR,
            fields[11]:sa.types.VARCHAR,
            fields[12]:sa.types.DateTime
           })
connection.close() …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy vertica python-3.x pandas

6
推荐指数
1
解决办法
1081
查看次数

标签 统计

pandas ×1

python-3.x ×1

sqlalchemy ×1

vertica ×1