首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python/Pyodbc/SQL -更新表并将字段设置为CSV文件

Python/Pyodbc/SQL -更新表并将字段设置为CSV文件
EN

Stack Overflow用户
提问于 2022-09-12 21:28:15
回答 2查看 98关注 0票数 0

我试图使用pyodbc更新现有的MS数据库表,其中包含一个非常长的多行字符串。该字符串实际上是一个已被转换为字符串的csv。

我试图使用的更新表的查询如下:

代码语言:javascript
运行
复制
          query = """
                  UPDATE Stuff 
                  SET Results = '{}'
                  WHERE AnalyteName = 
                  '{}'
                  """.format(df, analytename)

完整打印的声明如下:

代码语言:javascript
运行
复制
UPDATE Stuff
SET Results = 
'col a,col b,col c,...,col z,
 Row 1,a1,b1,c1,           
 ...,...,...,...,
 Row 3000,a3000,b3000,c3000'
WHERE AnalyteName = 'Serotonin'

但是,这似乎不起作用,我一直收到以下错误:

代码语言:javascript
运行
复制
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. (-3503) (SQLExecDirectW)')

我认为这是由于我试图用csv字符串来更新表的格式。

我尝试过使用INSERT并使用csv字符串和其他相关信息插入一个新行,这似乎是可行的。但是,我需要使用UPDATE,因为我最终将向这些列中添加其他csv字符串。这使我相信存在A)我的UPDATE查询的语法有问题(我对UPDATE语法不熟悉),或者B)我在有关UPDATE查询的文档中遗漏了一些东西。

执行这样的UPDATE查询可能吗?如果是的话,我哪里出错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 18:01:23

回答我自己的问题以防其他人想用这个。

原来,我缺少的是UPDATE语句中表列字段周围的括号。我的最后代码看起来是这样的。

代码语言:javascript
运行
复制
csv = df.to_csv(index=False)
name = 'some_name'
query = """
        UPDATE Stuff 
        SET 
            [Results] = ?
        WHERE 
            [AnalyteName] = ?
        """
self.cursor.execute(query, (csv, name))

我在这里看到过其他几个帖子,其中的括号不在列名周围。但是,由于这是MS Access,所以我认为这是这个查询所必需的,或者更确切地说是这个特定的查询,因为它在SET语句中包含了一个很长的强。

我欢迎在座的其他人提供一种更有效的方法来执行这项任务,或者其他人能更深入地了解为什么这对我有用。

票数 0
EN

Stack Overflow用户

发布于 2022-09-12 21:45:18

它将由表的字段类型确定。对于大量的文本,您需要数据库表中的blob字段。blob字段将存储二进制信息,因此使用blob不会“看到”非法字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73695430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档