社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Tomás Jullier • 3 年前 • 1336 次点击  

我在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()

我非常感谢你的帮助

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133674
 
1336 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Patrick
Reply   •   1 楼
Patrick    3 年前

如果您是从脚本运行查询,那么下面的函数可能是更改查询的更有用的方法

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

这只是一个如何实现的示例,但一般来说,构造一个查询字符串应该可以解决您的问题

Barmar
Reply   •   2 楼
Barmar    3 年前

在中打开文件时 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)