python - Python, Pandas, sql, read specific columns from a database with a for-loop
问题描述
my goal is to read only certain column names with pd.read_sql
## FILTER VALUES ##
#filtering all columns with temperature
filter_temp_values = df_column[df_column[0].str.contains("temperature")]
#filtering all columns with humidity
filter_humi_values = df_column[df_column[0].str.contains("humidity")]
result = cursor.fetchall()
for x in filter_temp_values[0]:
#y = tuple(list(x))
y = "SELECT '%s' FROM Raummonitoring" %(x)
test = cursor.execute(y)
result:
InternalError: Unread result found
i tried also:
result = cursor.fetchall()
for x in filter_temp_values[0]:
y = tuple(list(x))
z = f"SELECT ${y} FROM Raummonitoring"
test = pd.read_sql(z, con = engine)
result:
ProgrammingError: (mysql.connector.errors.ProgrammingError) 1370 (42000): execute command denied to user 'xxxx'@'%' for routine 'xxxx.$' [SQL: SELECT $('t', 'e', 'm', 'p', 'e', 'r', 'a', 't', 'u', 'r', 'e', '', 'e', 'r', 's', '', 'l', 'i', 't', 'e', '', '3', '', 'w', 'e', 'r', 'm', 's', 'e', 'r', '', '0', '', 'e', 'l', 's', 'y', 's', '_', '0') FROM Raummonitoring] (Background on this error at: http://sqlalche.me/e/14/f405)
what is my fault ?
解决方案
似乎您可能会遇到将字符串列名转换为其字符元组的问题。
像这样的工作,您首先使用“,”加入连接列表,然后只向您的数据库提交 1 次?
column_names = ['temperature_1', 'temperature_2', 'temperature_3']
y = ', '.join(column_names)
z = f"SELECT {y} FROM Raummonitoring"
print(z)
从 Raummonitoring 中选择温度_1、温度_2、温度_3
推荐阅读
- php - 使用php将sql server数据转换为json
- angular - 来自子输入元素的 Angular 4 求和值
- php - 设置全局 PHP-CURL 上传和下载速度限制?
- java - 带有皮肤实现的标签的 JavaFX 自定义控件
- visual-studio - ReSharper:覆盖一半屏幕的重载候选者
- javascript - 在 exports.run() 中调用函数
- java - 突出显示 JTable 中的自定义渲染器列
- azure - 引用 Azure ACS Cluster Master VM 公共 IP?
- javascript - Socket.io 端口与 Wamp-server 的使用
- php - laravel 如何在 Facade 类中使用对象作为数组