pandas to_sql 所有列均为 nvarchar

2023-12-21

我有一个动态创建的 pandas 数据框,其列名称各不相同。我试图将它们推送到 sql,但不希望它们作为默认数据类型“文本”转到 mssqlserver(任何人都可以解释为什么这是默认值吗?使用更常见的数据类型是否有意义? )

有谁知道如何为所有列指定数据类型?

column_errors.to_sql('load_errors',push_conn, if_exists = 'append', index = False, dtype = #Data type for all columns#)

dtype 参数采用一个字典,因为我不知道这些列是什么,所以很难将它们全部设置为“sqlalchemy.types.NVARCHAR”

这就是我想做的:

column_errors.to_sql('load_errors',push_conn, if_exists = 'append', index = False, dtype = 'sqlalchemy.types.NVARCHAR')

任何有关如何最好地指定所有列类型的帮助/理解将不胜感激!


To use dtype http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html,传递一个键控到每个数据框列的字典以及相应的sqlalchemy 类型 https://docs.sqlalchemy.org/en/13/core/types.html。将键更改为实际数据框列名称:

import sqlalchemy
import pandas as pd
...

column_errors.to_sql('load_errors',push_conn, 
                      if_exists = 'append', 
                      index = False, 
                      dtype={'datefld': sqlalchemy.DateTime(), 
                             'intfld':  sqlalchemy.types.INTEGER(),
                             'strfld': sqlalchemy.types.NVARCHAR(length=255)
                             'floatfld': sqlalchemy.types.Float(precision=3, asdecimal=True)
                             'booleanfld': sqlalchemy.types.Boolean})

您甚至可以动态创建这个dtype假设您事先不知道列名称或类型的字典:

def sqlcol(dfparam):    
    
    dtypedict = {}
    for i,j in zip(dfparam.columns, dfparam.dtypes):
        if "object" in str(j):
            dtypedict.update({i: sqlalchemy.types.NVARCHAR(length=255)})
                                 
        if "datetime" in str(j):
            dtypedict.update({i: sqlalchemy.types.DateTime()})

        if "float" in str(j):
            dtypedict.update({i: sqlalchemy.types.Float(precision=3, asdecimal=True)})

        if "int" in str(j):
            dtypedict.update({i: sqlalchemy.types.INT()})

    return dtypedict

outputdict = sqlcol(df)    
column_errors.to_sql('load_errors', 
                     push_conn, 
                     if_exists = 'append', 
                     index = False, 
                     dtype = outputdict)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas to_sql 所有列均为 nvarchar 的相关文章

随机推荐

  • 是否可以在 PostgreSQL 中将枚举转换为文本

    是否可以将 postgresql 模式中声明的枚举转换为文本 以便我可以对枚举列使用 like 子句 您可以将枚举投射到text轻松地并在其上使用任何文本运算符 SELECT FROM table WHERE enumfield TEXT
  • 如何将视频从 USB 网络摄像头流式传输到远程 HTML 页面

    我想创建一个程序 将视频从我的 USB 网络摄像头通过互联网传输到网页 目前 我使用一个网络服务 当触发时 会调用fswebcam捕获图像 保存到数据存储 转换为 base64 二进制并将该数据发送到 HTML 页面 在该页面中将其呈现到
  • python time.time() 和“夏令时”

    当运行python的计算机的时钟 Windows或Linux 时会发生什么 自动更改并调用time time 我读过的价值time time 当手动将时钟更改为过去的某个值时 该值会更小 time time docs https docs
  • Delphi XE2:可以在VCL应用程序中实例化FireMonkey Form吗?

    在 Delphi XE2 之前 我们只有 VCL 来创建 GUI 应用程序 德尔福 XE2 指出 注意 FireMonkey FMX 和可视化组件库 VCL 是 不兼容且不能在同一项目中使用或 应用 也就是说 一个应用程序必须是唯一的一个或
  • 从 DateTime.Now 获取本周的天数列表

    我的自相矛盾或者可能是微不足道的问题是创建一个从今天开始的日期列表 格式为 DD MM YY 假设今天是 11 04 2015 我想创建一个从 2015 年 11 月 2 日星期一到 2015 年 11 月 8 日星期日开始的日期时间列表
  • 无法启动 Ripple 的浏览器进程

    当我在 Visual Studio 中创建新的移动应用程序时 我可以运行它并且不会发生任何问题 但是当我开始运行另一个应用程序 由其他开发人员创建并在 TFS 上共享 时 我收到以下消息 Unable to get launched bro
  • 在合金中编程递归函数

    我正在尝试在 Alloy 中构造一个递归函数 根据丹尼尔 杰克逊书中显示的语法 这是可能的 我的职能是 fun auxiliaryToAvoidCyclicRecursion idTarget MethodId m Method Metho
  • 删除 AJAX 响应中的空白

    我有一个返回的 php 脚本0 28 然后使用 AJAX 将其提取到 HTML 并插入到跨度中 问题是 它插入了 5 个空格 并且似乎是换行符 然后 jQuery 将其视为更改 并在没有更改时使用新值更新现有范围 看来空格不是来自 php
  • 在 Windows 服务器上设置 RabbitMQ 集群

    我正在尝试在 Windows 服务器上设置 RabbitMQ 集群 这需要使用共享的 Erlang cookie 文件 根据文档 我需要做的就是确保不同机器上的根目录包含相同的 erlang cookie 文件 所以我所做的就是在两台机器上
  • 序列压缩?

    最近我遇到了一个让我很困惑的问题 问题是 我想压缩一个序列 这样就不会丢失任何信息 例如 一个 一个 一个 b gt 一个 b a b a a c gt a b a a c 它不能被压缩为 a b a c 因为这样我们会丢失 a a 有什么
  • 下一页 13.4 错误:API 路由中的 NEXT_REDIRECT

    我的 app api auth route ts 文件 import redirect from next navigation export async function GET req Request try redirect dash
  • 是否可以在不初始化的情况下使用数组?

    我从 Stack Overflow 上看到了一些代码 这让我很困惑 我只是不知道是否缺少某些部分 代码如下 ch curl init captcha url curl setopt ch CURLOPT USERAGENT this gt
  • 快速提供静态文件和路由

    我正在使用express js 我的根路径是 xyz 如果路径是 xyz api 我想为我想要提供静态文件的任何其他路径提供 json 例如 xyz abc 或 xyz def bjk 等 我当前的配置如下 app use xyz path
  • JavaScript 中的 me = this 是支持缩小的好习惯吗?

    所以在我的 JavaScript 代码库中我一直在使用var me this支持缩小的习惯用法 但我最近开始质疑这一点 我想知道是否分配this使用更智能的缩小工具可以避免变量的变化吗 似乎工具应该能够检测创建变量来表示的函数this将通过
  • 将列逆透视为行(oracle)

    很像这个原来的SO在 Oracle 中动态地将行转换为列 https stackoverflow com questions 7730111 pivoting rows into columns dynamically in oracle
  • 尝试执行 google 脚本时出现 403

    我正在尝试通过 API 执行谷歌脚本 我已授权所有必要的范围 包括我的参数 函数和开发模式 POST https script googleapis com v1 scripts scriptId run devMode true func
  • 安装 Airflow 时出错:默认情况下 Airflow 的依赖项之一安装 GPL

    运行后出现如下错误pip install airflow postgres 命令 gt raise RuntimeError By default one of Airflow s dependencies installs gt a GP
  • 如何让 =NULL 在 SQLite 中工作?

    给出下表 Table Comedians Id First Middle Last 1 Bob NULL Sagat 2 Jerry Kal Seinfeld 我想做以下准备好的查询 SELECT FROM Comedians WHERE
  • 资产“application.js”不存在于资产管道中

    我是新来的Ruby and in ROR框架 我尝试使用 JQuery 创建网络应用程序 我的步骤是 添加 gem jquery rails 并执行捆绑安装来自命令行的命令 String require jquery2添加到应用程序 js
  • pandas to_sql 所有列均为 nvarchar

    我有一个动态创建的 pandas 数据框 其列名称各不相同 我试图将它们推送到 sql 但不希望它们作为默认数据类型 文本 转到 mssqlserver 任何人都可以解释为什么这是默认值吗 使用更常见的数据类型是否有意义 有谁知道如何为所有