SQL Server DATE 作为字符串检索到 pandas 中

2024-02-14

当我将“日期”变量从 SQL Server 拉入 Python/Pandas 时,它作为“对象”出现。我已经安装并尝试了多个驱动程序(代码中显示了尝试过的注释驱动程序),每次都有相同的结果:

import pandas as pd
import pyodbc

conn_str = (
    r'Driver={SQL Server Native Client 11.0};'
    # r'Driver={SQL Server Native Client 10.0};'
    # r'Driver={ODBC Driver 11 for SQL Server};'
    # r'Driver={ODBC Driver 13 for SQL Server};'
    # r'Driver={SQL Server};'
    r'Server=MyServer;'
    r'Database=MyDB;'
    r'Trusted_Connection=yes;'
    )

cnxn = pyodbc.connect(conn_str)

sql = (
    "Select cast('2017-08-19' as date) [DateVar]"
    ", cast('2017-08-19' as datetime) [DateTimeVar]"
    ", cast('2017-08-19' as datetime2) [DateTime2Var]"
    )

d2 = pd.read_sql(sql,cnxn)

cnxn.close()

print(d2.dtypes)

返回结果为:

DateVar                 object
DateTimeVar     datetime64[ns]
DateTime2Var    datetime64[ns]
dtype: object

我希望 DateVar 是一个日期时间。有什么想法为什么会发生这种情况吗?

和这个人有同样的问题:pyodbc 将 SQL Server DATE 字段作为字符串返回 https://stackoverflow.com/questions/7172540/pyodbc-returns-sql-server-date-fields-as-strings但他的解决方法是使用我已经安装的 {SQL Server Native Client 10.0},但它对我不起作用。

我连接的 SQL Server 版本是:

Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 
Oct 20 2015 15:36:27 
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

UPDATES

1>

根据Max的输入,尝试了sqlalchemy,但没有运气,这仍然给了我一个字符串:

import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://MyDatabase/MyDB?driver=SQL+Server+Native+Client+10.0')
d2 = pd.read_sql(sql, engine)

2>

根据 Flipper 的 Q,仅使用 Pyodbc 游标完成了此操作,看起来在使用 Native Client 11.0 时游标中返回了正确的日期数据类型:

(('DateVar', datetime.date, None, 10, 10, 0, True),
 ('DateTimeVar', datetime.datetime, None, 23, 23, 3, True),
 ('DateTime2Var', datetime.datetime, None, 27, 27, 7, True))

这表明问题出在 Pandas 对 dtype 的处理中日期时间.日期加载到数据帧时。


Use the parse_dates的参数pandas.read_sql http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html来指定DateVar列值在数据帧加载时显式转换为日期时间。

更新了原来的代码片段:

...
d2 = pd.read_sql(sql=sql,
                 con=cnxn,
                 # explicitly convert DATE type to datetime object
                 parse_dates=["DateVar"])

cnxn.close()

print(d2.dtypes)

Returns

DateVar         datetime64[ns]
DateTimeVar     datetime64[ns]
DateTime2Var    datetime64[ns]
dtype: object

在 Windows 上使用 pyodbc 4.0.17、pandas 0.20.3 和 SQL Server 2014 进行了测试。

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

SQL Server DATE 作为字符串检索到 pandas 中 的相关文章

  • Python中使用cv2获取当前视频播放位置

    我正在尝试使用 CV2 和 Python 从播放视频中获取当前播放时间位置 如果可能 以毫秒为单位 目前我正在使用此示例代码来播放视频文件 import cv2 import numpy as np file name 2 mp4 wind
  • Python - 包和设置文件

    我有一个 python 包 需要从我的项目目录中提取设置 这是我的项目当前的结构 Project bin mypackage package files Project myproject project files start py se
  • 如何在 pygame 中聚焦光线或如何仅绘制窗口的某些圆形部分?

    对于这一点 如果您熟悉它 请想想 超级马里奥制造2 中嘘关卡中的黑暗模式 我试图在角色周围创建一个圆形聚光灯 这也将使圆圈范围内的任何内容都可见 例如部分站在地板上 敌人或场景中的任何其他物体 我的计划是首先绘制圆圈 聚光灯 然后绘制场景
  • 如何更改条形图上的 y 轴限制?

    我有一个df 我从中索引了europe n我绘制了一个条形图 europe n r 5 c 45 looks like this df Country string df Population numeric 变量 plt bar df C
  • WTForms 中的小数字段舍入

    我有一个包含价格小数字段的表单 如下所示 from flask ext wtf import Form import wtforms from wtforms validators import DataRequired from deci
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • 更改Python pylab玫瑰/极坐标图中图例标题的字体大小

    我正在尝试更改玫瑰图或 极地 图上现有图例标题的字体大小 大部分代码是由不在的其他人编写的 我已经添加 ax legend title legend title setp l get title fontsize 8 添加标题 legend
  • 数据库设计1对1关系

    我的数据库设计不正确 我应该在开发过程中解决这个问题吗 假定 user 表与 userprofile 表具有 1 1 关系 然而 实际设计中 用户 表与 用户配置文件 表具有 1 关系 一切正常 但无论如何应该修复它吗 做一件事 User
  • 按字段名称对命名元组列表进行排序的 Pythonic 方法

    我想对命名元组列表进行排序 而不必记住字段名的索引 我的解决方案看起来相当尴尬 希望有人能有一个更优雅的解决方案 from operator import itemgetter from collections import namedtu
  • 在 Ubuntu 上使用 Python 获取显示器分辨率

    对于 Ubuntu win32api 中是否有与 GetSystemMetrics 相当的代码 我需要获取显示器的宽度和高度 以像素为单位 我可以建议一些可以使用的方法 不过我还没有使用过 xlib 版本 1 xlib Python 程序的
  • Python argparse store_true 并将可选选项存储在一个参数中[重复]

    这个问题在这里已经有答案了 我需要识别是否单独给出参数或带有可选字符串或两者都没有 parser add argument options parser parse args so prog py arg 应该存储 进入选项 arg pro
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 不重复的Python组合

    我有一个数字列表 我想从中进行组合 如果我有清单 t 2 2 2 2 4 c list itertools combinations t 4 结果是 2 2 2 2 2 2 2 4 2 2 2 4 2 2 2 4 2 2 2 4 但我想得到
  • 对于 pygtk 应用程序来说,什么是好的嵌入式浏览器?

    我计划在我的 pygtk 应用程序中使用嵌入式浏览器 并且我正在 gtkmozembed 和 pywebkitgtk 之间进行辩论 两者之间有什么引人注目的区别吗 还有我不知道的第三种选择吗 应该注意的是 我不会使用它来访问网络上的内容 我
  • 在 Docker 容器内运行时,如何自动在 API 路由文件中进行 FASTAPI 拾取更改?

    我通过 docker 运行 FastApi 在 docker compose 中创建一个名为 ingestion data 的服务 我的 Dockerfile FROM tiangolo uvicorn gunicorn fastapi p
  • 收到的标签值 1 超出了 [0, 1) 的有效范围 - Python、Keras

    我正在使用具有张量流背景的 keras 开发一个简单的 cnn 分类器 def cnnKeras training data training labels test data test labels n dim print Initiat
  • 避免在列表理解中计算相同的表达式两次[重复]

    这个问题在这里已经有答案了 我在列表理解中使用一个函数和一个 if 函数 new list f x for x in old list if f x 0 令我恼火的是这个表达f x 在每个循环中计算两次 有没有办法以更清洁的方式做到这一点
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • 连接运算符 + 或 ,

    var1 abc var2 xyz print literal var1 var2 literalabcxyz print literal var1 var2 literal abc xyz 除了带有 的自动空格之外 两者有什么区别 哪个通
  • Python列表问题

    我在使用 python 列表时遇到问题 简化版本是 mylist1 some items in a list mylist2 mylist1 mylist1 pop i mylist insert i item print mylist1

随机推荐

  • 我如何告诉 Masonry 组件它的单元格已经改变了高度?

    我有一个反应组件 它以网格模式显示一维项目列表 每个项目都具有相同的宽度和高度 并且它们位于三列内 可能有很多这样的东西 所以我决定使用 Masonry 组件来尝试一下 React virtualized 该组件似乎是专门为这个用例而编写的
  • 如何在 C# 中创建 X509Certificate2 时更改颁发者名称

    我正在我的 C net 应用程序中创建 X509Certificate2 证书 创建证书时 如何设置颁发者名称 目前发行人名称与主体名称相同 请帮忙 Hmm 终于我用了充气城堡 dll创建证书 使用它 有一种方法可以设置颁发者名称 这是要生
  • --ntasks 或 -ntasks 在 SLURM 中起什么作用?

    我正在使用SLURM http slurm schedmd com 使用一些计算集群 它有 ntasks or n 我显然已经阅读了它的文档 http slurm schedmd com sbatch html http slurm sch
  • 为什么清空 NavigationStack 路径后对象仍在内存中?

    我正在尝试实现一个协调器来管理流程 状态存储在 CoordinatorStore 内 有 2 个用于管理流程的 Published 属性 这screen属性控制当前显示哪个视图以及path控制堆栈视图的导航堆栈 实施细节可以在下面找到 根据
  • grunt-contrib-jshint 忽略没有效果

    我想排除libs目录免于被检查 然而 ignores in options并种植了 jshintignore项目目录中的文件不会生成libs被排除在外 jshint options smarttabs true ignores public
  • 让 Sphinx 替换文档字符串文本

    我正在 Sphinx 中记录类似于以下内容的代码 class ParentClass object def init self pass def generic fun self Call this function using run P
  • Zend框架中的内连接

    我想在两个表之间进行内连接 访问表有 访问id target 报告表有 rep id visit id 每次访问都有很多报告 我想选择所有指定访问目标的报告 我这样做但它不起作用 db Zend Db Table getDefaultAda
  • Mercurial 显示文件修改不正确

    当我克隆 Mercurial 存储库时 它通常会显示文件已被修改 而实际上尚未修改 当我执行以下步骤时可能会发生这种情况 hg clone
  • 片段中的列表视图不起作用

    这是我的片段代码 public class LeftFragment extends ListFragment ArrayList
  • 带参数的装饰器[重复]

    这个问题在这里已经有答案了 代码如下 def my dec func def wrap w t func w return t 4 return wrap my dec def testing n return n new testing
  • C# Web 浏览器选择列表项单击

    我正在尝试使用以下方法从选择列表框中选择项目 var elements webBrowser1 Document GetElementsByTagName select foreach HtmlElement element in elem
  • 什么相当于 C# 中的 Microsoft.VisualBasic.Collection?

    我有一个方法 它需要一个存储过程名称和一个Microsoft VisualBasic Collection http msdn microsoft com en us library microsoft visualbasic collec
  • 在 Laravel 4 中缓存视图输出

    我知道 Blade 已经缓存了所有 Blade 视图的已编译 PHP 但我想更进一步 我正在开发的一个网站被模块化为组件视图 然后在默认控制器中拼凑在一起 每个 小部件 都有自己的视图 很少更改内容 少数频繁更新的除外 因此 我想缓存这些很
  • Jvectormap 在 div 变化时非常小

    我有两个 div 一个是世界地图 另一个是美国地图 当在世界地图上单击美国时 我想隐藏该 div 并将美国地图带入视图 这是可行的 但地图很小 即使缩放按钮的位置表明 div 的大小是它应该的大小 有任何想法吗 如果我从一开始就将两个 di
  • 获取php中两个日期之间的周数

    我想获取给定两个日期的周数 即从 2012 01 01 到 2012 12 31 周数应该恰好落在上面指定的范围内 您可以为此提供建议吗 像这样的东西应该可以正常工作
  • 如何使用 VisualSVN Server 将现有 Visual Studio 解决方案置于源代码管理之下?

    我有一个现有的 Visual Studio 2013 解决方案 我想使用 VisualSVN Server 将其置于源代码控制之下 我安装了 VisualSVN Server 并创建了一个新的空白存储库 他们的入门 https www vi
  • MuPdf 内存不足

    您好 我在项目中使用 MuPdf 库来查看文档 问题是 当您在平板电脑上的 11 英寸 Activity 中打开 3 7 个文档时 我会出现内存溢出 当您加载新文档时 对先前文档的所有引用都会被销毁 但内存中文档的图像不会被删除 对象在 1
  • 如何在软键盘顶部的建议中添加单词

    有什么办法可以在软键盘的建议中添加单词吗 对于特定的 Edittext 字段 我想将名称列表添加到 android 2 0 中软键盘顶部弹出的建议中 有谁知道这是否可能 Here http android git kernel org p
  • 侧边栏增强插件已安装但不起作用

    系统配置 Sublime Text3 内部版本 3065 Ubuntu 14 04 我想在浏览器中添加预览 发现侧边栏增强功能 Be https github com titoBouzout SideBarEnhancements是最好的插
  • SQL Server DATE 作为字符串检索到 pandas 中

    当我将 日期 变量从 SQL Server 拉入 Python Pandas 时 它作为 对象 出现 我已经安装并尝试了多个驱动程序 代码中显示了尝试过的注释驱动程序 每次都有相同的结果 import pandas as pd import