如果可能,将SQL转换为Python

2024-09-30 01:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

如果可能的话,是否有一个工具可以将sql语句转换成python语句。例如:

(CASE WHEN var = 2 then 'Yes' else 'No' END) custom_var
==>
customVar = 'Yes' if var == 2 else 'No'

我正试图为json输入中类似ETL的转换提供一个API。下面是一个输入示例:

^{pr2}$

我们可以将其转化为:

{
    "ID": 4,
    "Name": "David",
    "NewField: "4David"
}

或者,是否有更好的转换语言可以在这里使用而不是SQL?在


Tags: 工具nosqlifvarcustom语句else
1条回答
网友
1楼 · 发布于 2024-09-30 01:26:39

SET NewField = CONCAT (ID, Name)实际上是有效的sql吗?(如果Newfield是一个变量,您是否需要声明它并以“@”作为前缀)。如果您只想执行任意SQL,可以使用sqlite来破解:

import sqlite3
import json

query = """
{
    "ID": "4",
    "Name": "David",
    "Transformation": "SELECT ID || Name AS NewField FROM inputdata"
}"""

query_dict = json.loads(query)

db = sqlite3.Connection('mydb')
db.execute('create table inputdata ({} VARCHAR(100));'.format(' VARCHAR(100), '.join(query_dict.keys())))
db.execute('insert into inputdata ({}) values ("{}")'.format(','.join(query_dict.keys()),'","'.join(query_dict.values())))

r = db.execute(query_dict['Transformation'])
response = {}
response[r.description[0][0]] = r.fetchone()[0]

print(response)
#{'NewField': '4David'}

db.execute('drop table inputdata;')
db.close()

相关问题 更多 >

    热门问题