python - 如何在 select 语句中使用在 select 语句之外定义的变量
问题描述
我想使用 select 语句从数据集中隔离前 525,600 行,这很容易使用 LIMIT 语句,但是我想为 58 个单独的表执行此操作。我有一个表名列表,并试图定义一个函数来遍历所有表,但是我在函数中定义的变量名在 sql 语句中无法识别。这是我的代码:
import pandas as pd
from sqlalchemy import create_engine
import psycopg2
mylist = ['egauge13830','egauge13836','egauge13974','egauge14018','egauge14795','egauge15601',
'egauge15623','egauge16133','egauge16608','egauge16616','egauge17073','egauge17311',
'egauge18158','egauge18350','egauge18544','egauge19696','egauge19810','egauge19821',
'egauge20358','egauge20407','egauge20670','egauge20925','egauge21932','egauge22084',
'egauge22271','egauge22785','egauge23534','egauge24121','egauge24318','egauge2474',
'egauge26086','egauge26944','egauge27467','egauge28351','egauge28489','egauge2850',
'egauge2852','egauge28684','egauge30039','egauge30378','egauge3166','egauge3167',
'egauge3171','egauge32290','egauge32507','egauge33764','egauge3608','egauge3611',
'egauge4183','egauge5198','egauge6437','egauge7692','egauge7729','egauge7731',
'egauge8253','egauge8617','egauge8816','egauge9102']
def first_chunk(egauge):
engine = create_engine('postgresql://postgres:postgres@stargate/profiles')
start_time_stmnt = """
SELECT *
FROM egauge
LIMIT 525600
"""
first = pd.read_sql_query(start_time_stmnt, engine)
def iterthro(data):
for x in data:
first_chunk(x)
iterthro(mylist)
我收到的错误告诉我关系“egauge”不存在。顺便说一句,我知道这段代码毫无用处,因为它对选定的行没有任何作用,但我计划对此做更多的事情,并想在继续前进之前弄清楚这个问题。我尝试过简单的事情,比如不同的引用组合,我不确定我是否犯了一个简单的语法错误,或者我的逻辑是否完全有缺陷。感谢您的任何帮助!
解决方案
这行得通吗?我没有一个例子来测试它,但我认为你需要更好地将你的语法与你的变量分开。
def first_chunk(egauge):
engine = create_engine('postgresql://postgres:postgres@stargate/profiles')
start_time_stmnt = " SELECT * " \
" FROM " + egauge + \
" LIMIT 525600 "
first = pd.read_sql_query(sql=start_time_stmnt, con=engine, params=())
推荐阅读
- java - Java JPA 无法添加或更新子行:外键约束失败
- r - 输入的键都不是有效键 - R
- python - 有没有办法确定一张图片是否比另一张更随机,python
- webpack - 编译 webpack 项目时共享一个 scss 文件
- google-apps-script - 如何从谷歌日历活动中获取“笔记”?
- npm - npm说我没有yarn,但是我已经安装了npm
- c# - 用于在 ItemsControl 中的 CheckBox 上的 MiddleClick 的 WPF 命令参数
- java - 8 位二进制补码范围
- azure - Azure 认知搜索索引器可以设置字段值吗?
- html - 无需直接访问src selenium python即可访问iframe内部html