q = f"""
SELECT * FROM table;
"""
df = pd.read_sql(q, con=conn)我在python [col1, col2, ... , coln]中存储了多个列
每当我想查询除少数列之外的所有列时,查询所有列然后删除是当前正在使用的方法。
我想知道是否在q中传递列的列表
q = f""" SELECT {column_list} FROM table"""是有可能的。
这样做的原因是为了在jupyter笔记本中节省内存,只在笔记本中引入必要的列。
发布于 2022-02-24 09:13:20
可以根据列名列表创建CSV列列表:
col_list = ['col1', 'col2', 'col3']
cols = ', '.join(col_list)
q = f"""
SELECT {cols} FROM table;
"""
df = pd.read_sql(q, con=conn)
print(q) # SELECT col1, col2, col3 FROM table;发布于 2022-02-24 09:17:38
编辑:不要这样做。见下文的评论。
当然,你能做到的。但是,不建议使用f-字符串(或某种自定义的格式化方式),原因之一是防止SQL注入攻击。首选的方法是使用数据库连接器使用的任何方法。
我以前使用过SQLite3,在它中我们做了这样的事情:
from sqlite3 import connect
connection = connect(path_to_db)
data = connection.execute("SELECT ?, ?, ? FROM table;", ("col1", "col2", "col3"))问号将取代查询中的列名。该库有内置的保护措施,如果您使用这种方法,它将起作用。您还可以将它用于其他东西(如...WHERE name = ?;)。
https://stackoverflow.com/questions/71249558
复制相似问题