2016-11-14 3 views
1

, поэтому я использую следующий код для SELECT столбцов FROM из определенной таблицы на SQL Server.Использовать SQL 'like' в Pandas с input()

sus_base = pd.read_sql_query("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE]", con) 
df1 = pd.read_sql_query("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE] WHERE text like '%car%'", con) 
df2= pd.read_sql_query("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE] WHERE text like '%plane%'", con) 
df3= pd.read_sql_query("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE] WHERE text like '%quality%'", con) 

Но, я должен сделать это для большого количества строк. Я попробовал следующее в Python, который не работает:

test = pd.read_sql_query(("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE] WHERE text like '%s%'", input()), con) 

Это дает мне следующую ошибку, спросив меня для ввода:

DatabaseError: Execution failed on sql '("SELECT screen_name, user_id, text FROM [dbo].[TABLE_ONE] WHERE text like '%s%'", "'car'")': bytes or integer address expected instead of tuple instance. 

И да, я тоже пробовал без «» кавычки вокруг машина.

df1 будет выглядеть:

JAN | 20938 | Hi I am looking for a car somewhere 
BOB | 38470 | Guys, where is my plane? 
ELSA| 49850 | Never know what to do next.. 
CARL| 08923 | The quality of this product is amazing! 
ETC. 

Вы можете себе представить, что это будет много работы, чтобы создать это. Поэтому было бы неплохо, если бы конечный пользователь мог просто ввести слово, которое он ищет в строке текстов, и он вернет те тексты, которые были бы, когда я напечатаю их в приведенном выше примере. Затем я буду уверен, что он попадет в файл данных и/или файл Excel.

ответ

0

Ввод не преобразуется в текст, который pandas должен отправить запросу. В строке:

pd.read_sql_query(("SELECT ... WHERE text like '%s%'", input()), con) 

Что фактически подается в pd.read_sql_query((str, str), con). Другими словами, вы отправили 2-кортежи строк и объект соединения, он ожидает только строку и объект соединения. Попробуйте форматировать строку вместо:

pd.read_sql_query("SELECT ... WHERE text like %{}%".format(input()), con) 
+0

Привет, Джеймс, спасибо за ваш ответ. Однако теперь он запрашивает имя столбца. Когда я изменил его на нижеследующее ниже, он отлично работал! ..query ("SELECT ... WHERE text like '% {}%'. Format (input()), con) – user6533517

+0

Прохладный, я обновлю свой ответ. Пожалуйста, не забывайте отмечать вопрос как ответ. – James

+0

Извините для последнего ответа, но я отметил это как ответ;). Еще раз спасибо – user6533517

Смежные вопросы