如何在 Pandas read_sql() 中使用通配符 (%)
How to Use a Wildcard (%) in Pandas read_sql()
我正在尝试 运行 具有文本通配符的 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)
当 运行 我收到如下所示的与格式相关的错误。
TypeError: not enough arguments for format string
用Pandas读取MySQL时如何使用通配符?
在 pandas 的幕后,它使用您提供给它的任何 sql 引擎来解析语句。在你的情况下,那是 sql 炼金术,所以你需要弄清楚它是如何处理 %
的。它可能就像使用 LIKE '%%part%%'
转义一样简单。
在 psycopg 的情况下,您可以像这样使用 params
变量:
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=("%part%",))
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)
您可以使用 sqlalchemy 中的 text() 函数
'select * from _table_ where "_column_name_" like 'somethin%' order by... '
在 _column_name_ 周围加上 "" 为我解决了这个问题。
您需要在 read_sql pandas 方法中使用参数选项。
# string interpolate
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=("%part%",))
# variable interpolate
# string interpolate
val = 'part'
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=('%' + val + '%',))
我正在尝试 运行 具有文本通配符的 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)
当 运行 我收到如下所示的与格式相关的错误。
TypeError: not enough arguments for format string
用Pandas读取MySQL时如何使用通配符?
在 pandas 的幕后,它使用您提供给它的任何 sql 引擎来解析语句。在你的情况下,那是 sql 炼金术,所以你需要弄清楚它是如何处理 %
的。它可能就像使用 LIKE '%%part%%'
转义一样简单。
在 psycopg 的情况下,您可以像这样使用 params
变量:
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=("%part%",))
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)
您可以使用 sqlalchemy 中的 text() 函数
'select * from _table_ where "_column_name_" like 'somethin%' order by... '
在 _column_name_ 周围加上 "" 为我解决了这个问题。
您需要在 read_sql pandas 方法中使用参数选项。
# string interpolate
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=("%part%",))
# variable interpolate
# string interpolate
val = 'part'
mysql_statement = """SELECT * FROM table WHERE field LIKE %s; """
df = pd.read_sql(mysql_statement, con=conn, params=('%' + val + '%',))