繁体   English   中英

Python如何从字典更新sql server?

[英]Python how to update a sql server from a dictionary?

我有一个 INSERT 语句,如下所示:

query = "INSERT TABLE ({columns}) VALUES ({value_placeholders})".format(
    columns=", ".join(my_dict.keys()),
    value_placeholders=", ".join(["?"] * len(my_dict)),
)

cursor.execute(query, list(my_dict.values()))

如何将其转换为 UPDATE 语句?

到目前为止,我已经得到了这个...

query = "UPDATE TABLE SET ({columns}) ({value_placeholders}) WHERE ID = ({id})".format(
    columns=", ".join(my_dict.keys()),
    value_placeholders=", ".join(["?"] * len(my_dict)),
    id=id
)

cursor.execute(query, list(my_dict.values()))

不确定如何加入字典中的键/值对以使其格式正确。

编辑:

my_dict ={
 'key1': '1',
 'key2': 'whatever',
 'key3': Timestamp('1970-01-01 00:27:34.883683354'),
 'key4': 'blabla',
 'key5': Timestamp('1970-01-01 00:27:34.883882086'),
 'ID': 11
}

这是您可以使用的生成的查询字符串

# Imports
import pandas as pd
from pandas import Timestamp
from datetime import datetime

# Input dict
my_dict ={
 'key1': '1',
 'key2': 'whatever',
 'key3': Timestamp('1970-01-01 00:27:34.883683354'),
 'key4': 'blabla',
 'key5': Timestamp('1970-01-01 00:27:34.883882086'),
 'ID': 11
}
# generate key/pair array
arr = []
for key,value in my_dict.items():
    if type(value) is Timestamp: # Handle TimeStamps
        arr.append("{key} = {value}".format(key=key, value=value.timestamp()))
    elif type(value) is int: # Handle Integers
        arr.append("{key} = {value}".format(key=key, value=value))
    else: # Default Handler
        arr.append("{key} = '{value}'".format(key=key, value=value))
# generate string from key/pair array
data = ", ".join(arr)

# format SQL string
id = 1
table_name = 'users'
query = "UPDATE {table_name} SET {data} WHERE id = {id};".format(table_name=table_name, data=data, id=id)

# Call Query
cursor.execute(query)

在这里阅读更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM