【发布时间】:2021-01-22 04:04:43
【问题描述】:
我使用 pandas 的 read_sql 方法执行了以下查询,该方法在查询 MySQL 数据库时效果很好:
sql = "SELECT * FROM semantic_groups sg join semantic_types st on sg.tui = st.tui where group_name in ({})".format(', '.join(['%s' for _ in semtypes]))
stypes = pd.read_sql(sql, params=[semtypes], con=engine)
但是,当我对 sqlite3 文件中的相同表运行此操作时,我得到并错误:
Execution failed on sql 'SELECT * FROM semantic_groups sg join semantic_types st on sg.tui = st.tui where group_name in (%s)': near "%": syntax error
很好,所以我用? 替换了%s,根据我所看到的一切,它应该可以工作,但我得到了错误:
Execution failed on sql 'SELECT st.tui, abbreviation, clamp_name, ctakes_name FROM semantic_groups sg join semantic_types st on sg.tui = st.tui where group_name in (?)': Error binding parameter 0 - probably unsupported type.
被传递的参数semtypes只是一个字符串值列表(['Anatomy']用于测试目的),group_name是一个TEXT字段,所以我不确定这个错误是什么意思?
【问题讨论】:
-
应该是
params=semtypes?
标签: python mysql pandas sqlite