如何在熊猫中使用通配符(%)read_sql()

Jas*_*all 2 python mysql wildcard python-2.7

我正在尝试运行一个MySQL查询,其中包含文本通配符,如下所示:

import sqlalchemy
import pandas as pd

#connect to mysql database
engine = sqlalchemy.create_engine('mysql://user:@localhost/db?charset=utf8')
conn = engine.connect()

#read sql into pandas dataframe
mysql_statement = """SELECT * FROM table WHERE field LIKE '%part%'; """
df = pd.read_sql(mysql_statement, con=conn)
Run Code Online (Sandbox Code Playgroud)

运行时,出现如下所示与格式相关的错误。

TypeError:格式字符串的参数不足

在使用Pandas读取MySQL时如何使用通配符?

Mub*_*har 10

from sqlalchemy import create_engine, text
import pandas as pd

mysql_statement = """SELECT * FROM table WHERE field LIKE '%part%'; """
df = pd.read_sql( text(mysql_statement), con=conn)
Run Code Online (Sandbox Code Playgroud)

您可以使用 sqlalchemy 中的 text() 函数


Zak*_*akJ 5

在pandas的内部,它使用您赋予它的任何SQL引擎来解析该语句。就您而言,这是sqlalchemy,因此您需要弄清楚它是如何处理的%。这可能就像用逃脱一样容易LIKE '%%part%%'

对于psycopg,可以使用如下params变量:

mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=("%part%",))
Run Code Online (Sandbox Code Playgroud)