我试图在mysql数据库中的特定列中搜索包含字符串的行,例如,如果我搜索的字符串是['bar'、'foo'、'dog'、'cat'],并且该列有句子,例如'this is a sentence'我想挑选出所有数据库行,其中句子中有匹配的字符串。因此,如果“这是一只猫”在我正在搜索的列中,那么应该返回它。
为此,我使用sqlalchemy进行了如下查询:
import pandas as pd
import sqlalchemy as sql
connect_string = 'some_db_address'
sql_engine = sql.create_engine(connect_string)
query = """SELECT * FROM database
WHERE column_name LIKE '%word1%'
AND column_name LIKE '%word2%' """
result = pd.read_sql_query(query, sql_engine)
这给了我一个机会 ValueError: unsupported format character 'L' (0x4c) at index 87
错误-知道为什么会出现这种情况吗?
编辑:
我使用python fstring进行查询,例如:
query = f"""SELECT * FROM database
WHERE column_name LIKE '%{word1}%'
AND column_name LIKE '%{word2}%' """
result = pd.read_sql_query(query, sql_engine)
其中word变量的数量发生了变化,但在上面提到的示例中,word1以“l”开头,因此出现了错误消息
1条答案
按热度按时间jaxagkaj1#
我可以确认你的方法在mysqlclient和pymysql上都失败了。这件事肯定有点奇怪
read_sql_query
当sql命令文本包含百分号时。然而,正如在评论中所指出的,像那样使用sql注入是一个“坏主意”™ 不管怎样。相反,您应该使用如下查询参数: