可以使用pandas / sqlalchemy将数组插入sql数据库吗?(postgres)

用户名

具有以下内容:

engine = sqlalchemy.create_engine(url)

df = pd.DataFrame({
    "eid": [1,2],
    "f_i": [123, 1231],
    "f_i_arr": [[123], [0]],
    "f_53": ["2013/12/1","2013/12/1",],
    "f_53a": [["2013/12/1"], ["2013/12/1"],],
})

with engine.connect() as con:
    con.execute("""
        DROP TABLE IF EXISTS public.test;
        CREATE TABLE public.test
        (
          eid integer NOT NULL,
          f_i INTEGER NULL,
          f_i_arr INTEGER NULL,
          f_53 DATE NULL,
          f_53a DATE[] NULL,
           PRIMARY KEY(eid)
        );;
        """)
    df.to_sql("test", con, if_exists='append')

如果我尝试仅插入列“ f_53”(an date),它将成功。

如果我尝试添加列“ f_53a”(a date[]),它将失败并显示:

                                            ^
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column "f_53a" is of type date[] but expression is of type text[]
LINE 1: ..._53, f_53a, f_i, f_i_arr) VALUES (1, '2013/12/1', ARRAY['201...
                                                             ^
HINT:  You will need to rewrite or cast the expression.
 [SQL: 'INSERT INTO test (eid, f_53, f_53a, f_i, f_i_arr) VALUES (%(eid)s, %(f_53)s, %(f_53a)s, %(f_i)s, %(f_i_arr)s)'] [parameters: ({'f_53': '2013/12/1', 'f_53a': ['2013/12/1', '2013/12/1'], 'f_i_arr': [123], 'eid': 1, 'f_i': 123}, {'f_53': '2013/12/1', 'f_53a': ['2013/12/1', '2013/12/1'], 'f_i_arr': [0], 'eid': 2, 'f_i': 1231})]
用户名

是的-可以将数据框中的类型[][][]类型从数据框插入到Postgres中以形成数据框。

与平面DATE类型不同,这些类型可以由sql正确解析,DATE[]并且DATE[][]需要首先转换为datetime对象。像这样

with engine.connect() as con:
    con.execute("""
        DROP TABLE IF EXISTS public.test;
        CREATE TABLE public.test
        (
          eid integer NOT NULL,
          f_i INTEGER NULL,
          f_ia INTEGER[] NULL,
          f_iaa INTEGER[][] NULL,
          f_d DATE NULL,
          f_da DATE[] NULL,
          f_daa DATE[][] NULL,
          PRIMARY KEY(eid)
        );
        """)


    d = pd.to_datetime("2013/12/1")
    i = 99
    df = pd.DataFrame({
        "eid": [1,2],

        "f_i": [i,i],
        "f_ia": [None, [i,i]],
        "f_iaa": [[[i,i],[i,i]], None],

        "f_d": [d,d],
        "f_da": [[d,d],None],
        "f_daa": [[[d,d],[d,d]],None],
    })
    df.to_sql("test", con, if_exists='append', index=None)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 psycopg2 将包含 JSON 数组字段的元组列表插入 Postgres 数据库

无法使用 PHP 将数据插入 Postgres 数据库

使用Dart将数据插入Postgres数据库

Python PyQt5:我还可以通过SQL将QPushButton插入数据库吗?

可以使用 Python 作为数据库语言吗?

可以使用pgAdmin管理OpenShift数据库吗?

django可以使用外部数据库吗?

使用OPENJSON将两个数组的对象插入SQL数据库

使用fastAPI将嵌套模式插入数据库吗?

使用Python动态将数据插入SQL数据库

使用sql命令将数据插入数据库的问题

使用PHP将数组插入MySQL数据库?

使用PHP将数组插入数据库

使用PHP将数组插入数据库

如何使用laravel将数组值插入数据库

使用SQLAlchemy可以在数据库中具有列表或数组吗?

我可以使用Python的Pygal模块可视化SQLalchemy数据库中的数据吗?

使用PHP将SQL插入数据库-INSERT INTO问题

使用PHP将调查插入SQL数据库

使用PDO将映像插入SQL Server数据库

尝试使用SQLAlchemy将数据插入Snowflake数据库表

Artifactory 可以使用不同数据库和数据库用户名的 SQL Server 数据库吗?

我们可以使用 Azure SSIS IR 运行时将数据从本地移动到 Azure Sql 数据库吗?

我们可以将数据插入Firebase实时数据库吗?

如何使用 psycopg2 将数据插入 postgres 数据库

使用 pgx.CopyFrom 将 csv 数据批量插入到 postgres 数据库中

使用 SQLAlchemy 将多个实例插入数据库时出现类型错误

可以使用innerHTML插入脚本吗?

我可以使用 R 中的 DBI 库将一个 SQLite 数据库附加到另一个数据库吗?