相关疑难解决方法(0)

将 pyodbc Connection 对象与 pandas 一起使用时收到警告

我试图理解当我设置 python 代码在 VM 服务器上运行时开始出现的以下错误,该服务器在我的桌面上安装了 3.9.5 而不是 3.8.5。不确定这是否重要,但这可能是部分原因。

错误

C:\ProgramData\Miniconda3\lib\site-packages\pandas\io\sql.py:758: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) or
database string URI or sqlite3 DBAPI2 connection
other DBAPI2 objects are not tested, please consider using SQLAlchemy
  warnings.warn(
Run Code Online (Sandbox Code Playgroud)

这是一个相当简单的 .py 文件,该文件导入 pyodbc 和 sqlalchemy fwiw。产生警告的 sql 调用的相当通用/简单的版本是:

myserver_string = "xxxxxxxxx,nnnn"
db_string = "xxxxxx"

cnxn = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:"+myserver_string+";Database="+db_string +";TrustServerCertificate=no;Connection Timeout=600;Authentication=ActiveDirectoryIntegrated;"

def readAnyTable(tablename, date):
    conn = pyodbc.connect(cnxn)
    
    query_result = pd.read_sql_query(
            ''' 
                 SELECT *
                 FROM [{0}].[dbo].[{1}]
                where Asof >= '{2}'
            '''.format(db_string,tablename,date,), conn) …
Run Code Online (Sandbox Code Playgroud)

sql-server pyodbc python-3.x pandas

76
推荐指数
4
解决办法
14万
查看次数

pandas的read_sql,带有WHERE条件的值列表

假设一个数据帧scoreDF:

          date       time      score
sec_code
1048      2015-02-25 09:21:00     28
2888      2015-02-25 09:21:00     25
945       2015-02-25 09:21:00     23
4         2015-02-25 09:21:00     22
669       2015-02-25 09:21:00     15
Run Code Online (Sandbox Code Playgroud)

我需要做一个MySQL查询检索匹配值的所有行scoreDF.indexsec_code列.

通常我会去一个循环:

    finalResultDF = DataFrame()

    queryString = 'SELECT * FROM tableA WHERE sec_code = ' + code

    for code in scoreDF.index:
        queryResultDF = sql.read_sql(queryString, con)
        finalResultDF.append(queryResultDF)
Run Code Online (Sandbox Code Playgroud)

如果没有循环传递值列表(即scoreDF.indexWHERE条件),是否可以以不同方式执行此操作?我用谷歌搜索了几个小时,有些人提到'参数',read_sql但我无法理解.

python mysql pandas

5
推荐指数
2
解决办法
5937
查看次数

标签 统计

pandas ×2

mysql ×1

pyodbc ×1

python ×1

python-3.x ×1

sql-server ×1