我在将 Python 中的 SQL 查询传递到 MS SQL 时遇到了一些问题。
正在谈论通过 pyodbc
检索一些代码,使用正则表达式对其进行编辑,然后将其传递回数据库的新表中。
我还尝试了一些 print()
-Commands 以确保代码在 Python 中运行并以正确的方式进行编辑,但是在编辑字符串后我无法将这些内容写回 SQL。
我正在尝试通过以下方式传递字符串:
try:
values = ""
for row in cursor.execute("select row1, row2 from db_table"):
cleanheader = cleanhtml(str(row.row1))
cleanbody = cleanhtml(str(row.row2))
values = values + "('" + cleanheader + "','" + cleanbody + "'),"
values[0:len(values)-1]
values = values + ";"
sql = "INSERT INTO db_new_table VALUES ('"+str(values)+"')"
cursor.execute(sql)
而 cleanhtml()
指的是我的正则表达式函数:
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});')
cleantext = re.sub(cleanr, '', raw_html)
return cleantext
有人知道如何将这些行正确地传递给 SQL 吗?
答案 0 :(得分:1)
通过创建辅助列表(public class CustomGlobalFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
//TODO: modify the two objects or wrap them in wrapper class...
Mono<Void> result = chain.filter(exchange);
byte[] requestData = getRequestData(request);//TODO: get request data from request object
byte[] responseData = getResponseData(response);//TODO: get response data from response object
//TODO: custom logic
return result;
}
}
)来附加来自游标的元组的每个已处理成员,并且更喜欢使用 {{1 }} 而不是 row
的性能更高,例如
executemany
答案 1 :(得分:0)
看起来您用单引号将 VALUES 块中的数据引用了两次。看来你也在搞乱那里的括号。在执行之前打印您的查询。
sql = "INSERT INTO db_new_table VALUES ('"+str(values)+"')"
此处的值已被引用并在括号中。