Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向.executemany提供DataFrame值以进行更新

向.executemany提供DataFrame值以进行更新
EN

Stack Overflow用户
提问于 2020-08-14 20:17:33
回答 1查看 374关注 0票数 2

我需要通过python在MSSQL中更新excel数据。因此,首先我读取excel文件(其中只有一行)并对数据类型进行必要的更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pyodbc 
import pandas as pd
df = pd.read_excel('test_new.xlsx')
first_col = df.pop('number')
df['number'] = first_col
df['sys_created_on'] = df['sys_created_on'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['opened_at'] = df['opened_at'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['resolved_at'] = df['resolved_at'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['sys_updated_on'] = df['sys_updated_on'].dt.strftime('%Y-%m-%d %H:%M:%S')
df.fillna('', inplace=True)
records = df.to_records(index=False)
result = list(records)
result

上面的语句给出了结果。结果是一个列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('Sha', 'po1301', 'Closed', 'TLS - Admin', 15585, 'Store Network', 'Switch', 'CATS0005587', '', 'mic.vin.com ', 'pis - opo', 'LEC NIN', '2020-08-11 23:56:03', '1 Pro 1 LLC', '', '', 'Switch', '', '', '', 'Phone', 'oshi3001', 'Resolved', '"Approved Tech\r\n1. troubleshooting.\r\n"\r\n\r\n\r\nIMPORTANT - TECH SHOULD CALL NOC ON ARRIVAL', 'No', False, '1 - High', '0-6 hours', False, 'mada gill', '7-ELEVEN STORE - 38578', '', '2020-08-11 23:56:03', 'john win', '1 - Critical', 6, '', 'Not Solved (Not Reproducible)', 'duplicate case, see notes', 59022, '2020-08-12 16:19:45', '', 'UNKNOWN', '3 - Low', 'Store is hard down', 1, 'Power Verification', 'svd', '1 - High', '2020-08-12 16:19:45', False, 'INC1090099')] 

在这部分之后,我创建了一条SQL update语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conn = pyodbc.connect()
cursor = conn.cursor()
cursor.executemany("Update proj.[mid].[datahub] SET assigned_to = ?, [caller_id#user_name] = ?, state = ?, assignment_group = ?, business_duration = ?, business_service = ?, category = ?, u_category_structure = ?, u_resolution_ci = ?, resolved_by = ?, u_resolver_group = ?, u_service_provider = ?, sys_created_on = ?, caller_id = ?, u_caller_first_name = ?, u_caller_last_name = ?, u_vendor_category = ?, rfc = ?, closed_at = ?, closed_by = ?, contact_type = ?, sys_created_by = ?, u_customer_portal_state = ?, description = ?, u_first_call_resolution = ?, u_first_time_fix = ?, impact = ?, u_incident_age = ?, knowledge = ?, reopened_by = ?, location = ?, u_on_behalf_of = ?, opened_at = ?, opened_by = ?, priority = ?, reassignment_count = ?, u_resolution_method = ?, close_code = ?, close_notes = ?, calendar_stc = ?, resolved_at = ?, u_sd_esclation = ?, sla_due = ?, severity = ?, short_description = ?, reopen_count = ?, subcategory = ?, sys_updated_by = ?, urgency = ?, sys_updated_on = ?, [assigned_to#active] = ? WHERE number = ?", result)
cursor.commit()

它给出了错误: ProgrammingError:执行的第二个参数必须是序列、迭代器或生成器。

由于某些原因,它并不将结果变量作为列表,而实际上它是一个列表。如果我在cursor.executemany()中打印语句,然后执行它,它会更新数据,但是使用保存列表的result变量,它不能工作。

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 22:48:58

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = print(list(tuple(records)))

将结果打印到控制台,但print函数本身返回None。相反,您应该省略records调用,并像这样分配result ...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = list(df.itertuples(index=False))

..。如果你愿意,那就把它打印出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(result)

编辑:完整的工作示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cnxn = pyodbc.connect("DSN=mssqlLocal64")
crsr = cnxn.cursor()

# set up test environment
crsr.execute("CREATE TABLE #tmp (txt varchar(10), id int primary key)")
crsr.execute(
    "INSERT INTO #tmp (txt, id) VALUES "
    "('old_foo', 1), ('old_bar', 2)"
)
print(crsr.execute("SELECT * FROM #tmp").fetchall())
"""console output:
[('old_foo', 1), ('old_bar', 2)]
"""

# test
df = pd.DataFrame([("new_foo", 1), ("new_bar", 2)], columns=["txt", "id"])
result = list(df.itertuples(index=False))
crsr.executemany("UPDATE #tmp SET txt = ? WHERE id = ?", result)
print(crsr.execute("SELECT * FROM #tmp").fetchall())
"""console output:
[('new_foo', 1), ('new_bar', 2)]
"""
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63419511

复制
相关文章
iOS_输入text处理 和 键盘Type
2.UIKeyboardTypeASCIICapable     // 显示可以输入ASCII字符的键盘。
mikimo
2022/07/20
1K0
iOS_输入text处理 和 键盘Type
IOS UITextField 事件列表
//UITextFieldDelegate import UIKit class ViewController:UIViewController,UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let rect = CGRect(x:10, y:80, wid
用户5760343
2019/07/08
1.1K0
iOS UITextField 文本输入框
///UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行; ///UITextField 可编辑本文,但是无法换行,只能在一行显示;当点击键盘上的return时会收到一个事件做一些事情。 ////UITextView 可编辑文本,提供换行功能。
Lee坚武
2020/01/19
3.2K0
iOS开发——定制UITextField
在iOS中UITextField这个控件作为文本输入控件一定是使用率最高的几个控件之一,而iOS提供的默认的原始TextField的造型肯定在开发时很难满足我们的要求,原因很简单,不够美观,实在太单调。所以今天我们从一些简单的复写UITextField方法开始,来讲一讲如何定制一个属于自己的UITextField。
Originalee
2018/08/30
1.6K0
IOS UITextField文本框控件
import UIKit class ViewController:UIViewController, UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically from a nib. let rect = CGRect(x:60, y:80, width:200, height:30) l
用户5760343
2019/07/08
1.9K0
IOS UITextField文本框控件
1.注册或登录页面设计:UILabel,UIButton,UITextField
学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初学者能有一定的帮助。最初学iOS的时候苦于没有大神指点,全靠自己一点点摸索,确实走了很多弯路,不希望还有小伙伴跟我一样走过多的弯路。   由于本人只是从去年11月份才开始玩iOS(附上自己的学习路线,如下图),受限于能力,难免有一些不完善或不恰当的地方,希望大神们多多见谅,勿拍砖,有不足或需要完善的地方也希望
猿人谷
2018/01/17
2.4K0
1.注册或登录页面设计:UILabel,UIButton,UITextField
IOS UITextField UIButton 结合
根据textfield的内容显示不同button的图像 image.png import UIKit class ViewController:UIViewController,UITextFiel
用户5760343
2019/07/08
9520
IOS UITextField UIButton 结合
PCA不适用于时间序列分析的案例研究
在大部份情况下我们都可以使用 PCA 进行线性降维。从图像处理到非结构化数据,无时无刻不在。我们甚至可以将它用于时间序列分析,虽然有更好的技术。在这篇文章中,我想向您介绍动态模式分解 (DMD),这是一种源自我的研究领域:流体动力学的用于高维时间序列的线性降维技术。DMD 结合了两个世界中的优点:PCA 和傅立叶变换。在数学上,它与动力系统理论中的一个基本算子有关,称为 Koopman 算子。但在深入研究 DMD 的数学之前,让我们用一个相当简单的例子来说明为什么 PCA 不是高维时间序列分析的最佳选择。
deephub
2021/07/23
1.5K0
PCA不适用于时间序列分析的案例研究
iOS 文本输入控制(献上框架)
我们在业务开发中,往往会遇到需要限制文本输入的需求,比如只能输入数字、不能输入空格,稍微复杂一点的比如小数点后最多两位的价格输入。当然,若你的正则表达式玩儿得很溜,这些并不是难题。但是我们仍然需要设置代理、实现代理,然后写上一堆的判断逻辑,总是有一些奇奇怪怪的问题导致最终结果不能很快完美呈现。
波儿菜
2018/05/07
1.1K0
iOS 文本输入控制(献上框架)
iOS UITextField 限制输入
但是如果很多页面的TextField控件需要验证这样写就很麻烦,为了不重复造轮子。写了一个Category。只实现了输入长度限制,输入数字,输入字母,如果不能满足需求可自行扩展。
赵哥窟
2019/01/28
1.2K0
iOS UITextField详解
除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。
码客说
2019/10/22
1.8K0
iOS-UITextField 全面解析iOS中UITextField 使用全面解析UITextField的代理方法通知UITextField 在storyboard 中设置属性
iOS中UITextField 使用全面解析 建议收藏,用到的时候来这里一查就都明白了 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef NS_ENUM(NSInteger, UI
xx_Cc
2018/05/10
7.3K0
【IOS开发基础系列】UISearch专题
        UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField.
江中散人_Jun
2023/10/16
5970
【IOS开发基础系列】UISearch专题
观察者模式observer不适用于_观察者模式代码
在软件构建过程中,我们需要为某些对象建立 一种“通知依赖关系” —-一个对象发(目标对象)的状态发生改变,所有依赖的对象(观察者对象)都将很好的得到通知。如果这样的依赖关系过于紧密。将使软件不能很好的抵御变化
全栈程序员站长
2022/09/22
6270
改变UITextField的光标颜色
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/52984966
用户1451823
2018/09/13
3.6K0
UITextField 常用方法实例
1. 自动添加其他字符串(空格)显示 自动显示空格 -(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *text = [textField text]; NSCharacterSet *characterSet = [NSCharacterSet charact
honey缘木鱼
2019/05/26
4870
iOS UITextField 使用与方法解读
UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。
珲少
2018/08/15
1.2K0
UITextField添加点击高亮状态
一、继承自UITextfield自定义一个SSTouchTextField 代码如下: #import "SSTouchTextField.h" @implementation SSTouchTextField #pragma mark - Private - (void)setBackgroundHighlighted:(BOOL)highlighted{ [UIView animateWithDuration:0.3f delay:0.f options:UIViewAnimationOp
czjwarrior
2018/05/28
1K0
iOS 实时监听UITextField输入事件
searchTextField=[[UITextFieldalloc]initWithFrame:CGRectMake(30,0,searchView.frame.size.width-120,30)];     [searchTextFieldsetPlaceholder:MYLocalizedString(@"shangpinmingchengtiaoma",@"")];     searchTextField.font = SearchViewTextFont;     [searchTextF
Lee坚武
2019/12/18
2.1K0
点击加载更多

相似问题

UITextField secureTextEntry是否关闭autocorrectionType和autocapatilizationType?

10

adjustsFontForContentSizeCategory不适用于UITextView和UITextField

23

在UIActionSheet中,键盘不适用于UITextField

13

禁用UITextfield键盘

214

UITextField禁用游标

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文