当使用pd.read_sql()从MySQL数据库中提取大约89万行(每行60-65列)时,连接(由SQLAlchemy引擎创建)会在形成查询之前被删除。有没有其他方法来优化对如此大量的数据的获取,因为我确实需要所有的行和列,并且我想要摆脱异常。
下面是一个代码片段:
import pandas as pd
def read_outputs(engine):
data = dict()
with engine.connect() as conn:
data['tbl_1']= pd.read_sql('tbl_1',con=con
假设我有一个非常大的表,并且我想使用chunksize = 10000的pd.read_sql。 我现在的方法是: from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('dialect://user:pass@host:port/schema')
with engine.connect() as conn:
for df in pd.read_sql('SELECT * FROM VERY_LARGE_TABLE', con=conn, chunk
我在一个库函数上使用partial,为其中一个参数提供默认值
library_func = lambda x, y, z : x + y + z
my_func = functools.partial(library_func, z = 5) #default value for one of the variables
# equiv to lambda x, y : x + y + 5
现在假设不是常量缺省z,我希望z依赖于y的值。例如,我们在字典中查找具有不同y值的键的z。
z = {"1":7,"2":8}[str(y)]
# now my_func
我有一个这种格式的SQL表,我想阅读它并将其转换成熊猫时态。
y (year) w (week) d (some data)
2009 1 10
2009 2 15
...
做这件事的好方法是什么?
我知道read_sql()的parse_dates参数,或者使用DatetimeIndex手动设置索引。我无法理解如何使用周数据来实现这一点。我尝试了以下方法。谢谢。
# gives NaT for year & week:
df = pd.read_sql("SELECT y, w, d FROM t",
我正在试着从时间在09:30到15:30之间的桌子上获取所有记录。
我的时间戳列为:
yyyy-mm-dd HH:MM:SS
下面返回一个空的dataframe:
sta = 'SELECT * FROM bnffut WHERE timestamp BETWEEN "09:15:00" and "15:30:00"'
df = pd.read_sql(sta,conn)
这个给了我所有的记录:
sta = 'SELECT * FROM bnffut WHERE timestamp >= "09:15:00"
我在Mysql有一张桌子。该表有200多列。我想阅读所有的列,但是,我必须将其中一个列(A)作为一个特定的名称。现在,我必须使用两行代码,这需要时间。
df1 = pd.read_sql("""SELECT * FROM mytable""", db1)
df2 = pd.read_sql("""SELECT A as specific_name FROM mytable""", db1)
我想问的是,这到底是用一行代码呢?谢谢
我有一个包含2个表的数据库。我希望将两个表中的所有数据放入单个数据帧中。在这两个表中都有一个时间列,我希望在合并后对数据进行排序。 df1=pd.read_sql("Select * from table1")
df2=pd.read_sql("Select * from table2") 将df1和df2组合成按时间列排序的单个数据帧的最佳方式是什么?
我们有几个进程,它们使用SQLAlchemy从DB中提取数据,然后使用Pandas来操作数据。我是否在我的sql中使用cast()拉取到较小的数据类型?或者我应该将作为较小的数据类型加载到我的数据帧中?
df = pd.read_sql("select cast(column_name as smallint) from schema.table;")
vs
df = pd.read_sql("select column_name from schema.table;", dtype={"column_name": "int8"}
我有两个python函数直接查询数据库。有没有办法将这两个函数连接到python中?
我想做几个联接,不太确定如何在python中这样做。
查询1:
def query1(businessDate):
con = pyodbc.connect(r'DSN='+'Stack',autocommit=True)
print('working')
#businessDate = r"'2019-03-13'"
#remember business date should be ente
我正在处理一个项目,它有很多在python中运行的查询。当我检查土匪的时候,我看到了问题-
Test results:
>> Issue: [B608:hardcoded_sql_expressions] Possible SQL injection vector through string-based query construction.
Severity: Medium Confidence: Low
Location: main.py:160
More Info: https://bandit.readthedocs.io/en/latest/plu
这主要是在熊猫的jupyter笔记和查询的范围内(我对两者都非常陌生)。我注意到,当我按一定顺序编写查询时,需要按一定的顺序使用dataframe:
df = pd.read_sql("select date, count(*) as count from "+tableName+" group by date" ,conn").sort_values(['date'].ascending=False)
我比我更有经验的朋友:
df = pd.read_sql("select date, count(*) as count fro
#here I have to apply the loop which can provide me the queries from excel for respective reports:
df1 = pd.read_sql(SQLqueryB2, con=con1)
df2 = pd.read_sql(ORCqueryC2, con=con2)
if (df1.equals(df2)):
print(Report2 +" : is Pass")
我们可以通过这样的操作(通过迭代ndarray)来实现上面的目标吗?或者做