我使用的是pyscopg2,它有一个基于SQL查询的返回列表的方法。下面的操作很好..。
def checkAnalysisStartDate(self):
session = self.connection()
cursor = session.cursor()
ids = self.getAnalysisIds() # this is a list of integers
cursor.execute("select start_date from analysis_run_history where analysis_id in %s", [tuple(ids)])
final_result = [i[0] for i in cursor.fetchall()]我想传递相同的整数列表,但这次从结果返回一个DataFrame。但是当我尝试这个的时候..。
import pandas.io.sql as sqlio
def getAnalysisMetaStatsDF(self):
session = self.connection()
ids = self.getAnalysisIds() # this is a list of integers
data = sqlio.read_sql_query("Select * from analysis_stats where analysis_id in %s", [tuple(ids)], session)
print(data) 我回来了..。
AttributeError: 'list' object has no attribute 'cursor'我认为这与我将参数传递给read_sql_query()的方式有关,但我不知道如何修复它
发布于 2022-09-15 17:25:22
每当调用函数时,请确保调用与其签名匹配。您可以通过运行help(sqlio.read_sql_query),在IPython或文档中键入sqlio.read_sql_query?来查找签名。你会发现这样的东西:
Signature:
read_sql_query(
sql,
con,
index_col=None,
coerce_float: 'bool' = True,
params=None,
parse_dates=None,
chunksize: 'int | None' = None,
dtype: 'DtypeArg | None' = None,
) -> 'DataFrame | Iterator[DataFrame]'注意,第二个参数是数据库连接对象,而不是查询的参数。在您的情况下,下面这样的调用更合适:
sqlio.read_sql_query(query_string, session, params = ids)发布于 2022-09-15 17:39:44
import mysql.connector
from mysql.connector import Error
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine("mysql://root:admin@localhost/pythondb", pool_size=10, max_overflow=20)
table = pd.read_sql("select *From emp", engine)https://stackoverflow.com/questions/73734510
复制相似问题