我需要用 python 替换 SQL 文件中的某个数字

I need to replace a certain number in a SQL file with python

我在 sql 文件中有这个简单的 sql 查询:

SELECT * FROM public.flores_comahue
WHERE codigo_postal::int > 7000

在这种情况下,我需要替换数字 7000,但它可以是任何其他数字。 我试过了,但显然没有用:

fin = open("prueba.sql", "r")

fout = open("prueba.sql", "w")

for line in fin:
    for i in line:
        if isinstance(i, int):
            fout.write(fout.replace(i, 5))

fin.close()
fout.close()

非常感谢您的帮助

当您以 w 模式打开文件时,文件会被截断。所以你在读取之前清空了文件。

您应该将读取和写入分开进行 -- 首先读取整个内容,然后打开它进行写入。

另一个问题是您的 for i in line: 循环。 line 是一个字符串,所以 i 是一个字符(只有一个元素的字符串)。它永远不会是 int.

您可以使用正则表达式查找数字并替换它。

import re

with open("prueba.sql", "r") as fin:
    contents = fin.read()

contents = re.sub(r'\b\d+\b', '5000', contents)

with open("prueba.sql", "w") as fout:
    fout.write(contents)

如果您是 运行 来自脚本的查询,则像下面这样的函数可能是更改查询的更有用的方法

import pyodbc

def run_query(number):
    query = f"SELECT * FROM public.flores_comahue WHERE codigo_postal::int > {number}"
    conn = pyodbc.connect(server_connection) # some connection
    results = pd.read_sql_query(query, conn) # run query
    conn.close()
    return restults

这只是如何完成此操作的一个示例,但通常构造一个查询字符串应该可以解决您的问题