【问题标题】:How to convert syntaxt of query from mysql to sqlite3如何将查询的语法从 mysql 转换为 sqlite3
【发布时间】: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


【解决方案1】:

应该是params=semtypes

sql = "SELECT * FROM semantic_groups sg join semantic_types st on sg.tui = st.tui where group_name in ({})".format(', '.join(['?' for _ in semtypes]))  

stypes = pd.read_sql(sql, params=semtypes, con=engine)

【讨论】:

  • 天哪!很简单!谢谢!这让我发疯了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多