postgresql Python:基于用户输入在SQL中选择列的最佳方法

uyto3xhc  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(111)

我在表中有两列,A列和B列
用户输入:A,B,C
用户可以给予上述任何输入。
如果用户输入为A,则需要选择列B。如果用户输入是B,则需要选择列A和列B。如果用户输入是C,则需要选择列A。
先谢谢你了。

hiz5n14c

hiz5n14c1#

在python中实现这一点的方法之一是定义自己的字典(dict),它将用户输入Map到所需的列以基于此进行选择,因此代码将是这样的(无论您连接到数据库的方式如何,以及您愿意如何执行查询,这都是通用逻辑)。

TABLE_NAME = ''

# this dict maps user selection to desired columns as mentioned 
mp = {
    'A' : 'B',
    'B' : 'A,B',
    'C' : 'A'
}

user_input = 'A' # the selected value received from the user 
desired_columns = mp[user_input] # get the desired columns based on user input 

query = f"""
SELECT {desired_columns}
FROM {TABLE_NAME};
"""
bvn4nwqk

bvn4nwqk2#

假设你有自己的PostgreSQL数据库。您应该在该数据库中有一个名为your_table的特定表,它由两个名为column_acolumn_b的列组成。作为用户,系统将要求您提供要选择的首选列,从选项A、B和C中进行选择。根据您的输入,脚本将动态地构造一个SQL查询,该查询将精确地选择您指定的列。
这是一个例子,你可以很容易地做到这一点:

import psycopg2

# Establish a connection to the PostgreSQL database
conn = psycopg2.connect(database="your_database", user="your_user", password="your_password", host="your_host", port="your_port")
cursor = conn.cursor()

# User input
user_input = input("Enter column(s) to select (A, B, C): ")
columns = []

# Check user input and build the list of columns to select
if "A" in user_input:
    columns.append("column_a")
if "B" in user_input:
    columns.append("column_b")

# Build the SQL query
if "C" in user_input:
    query = "SELECT column_a FROM your_table"
else:
    query = f"SELECT {', '.join(columns)} FROM your_table"

# Execute the query
cursor.execute(query)
results = cursor.fetchall()

# Process the results
for row in results:
    # Process each row as needed
    print(row)

# Close the cursor and connection
cursor.close()
conn.close()

我假设你已经安装了psycopg2,如果没有,就使用pip install psycopg2。我希望你会发现这有帮助...

相关问题