跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 中使用 sqlite3, 字符串中包含变量怎么写
未分類
20 7 月 2020

Python 中使用 sqlite3, 字符串中包含变量怎么写

Python 中使用 sqlite3, 字符串中包含变量怎么写

資深大佬 : youthfire 6

df = pd.DataFrame(pd.read_sql(‘select * from f65 where offer ‘ ‘+’ in offervalue, conn))

其中 offervalue 是一个变量,具体就是一个列表.我想给予的条件是 offer 号必须在 offervalue 这个列表里

运行提示错误:pandas.io.sql.DatabaseError: Execution failed on sql ‘False’: operation parameter must be str

如果我在’select * from f65 where offer ‘ ‘+’ in offervalue 外面加双引号,变量就变成字符串了.

大佬有話說 (12)

  • 資深大佬 : linuxkj

    引用变量?如果还是 python 的语法,格式化不就行了吗,%s 或着 format 方法
    ‘select * from f65 where offer in %s’ %(offervalue)

  • 資深大佬 : InkStone

    你先别考虑 pd 啊 sqlite3 啊什么的东西……先学习一下 Python 的基本语法。

    第一个语句传入的第一个参数是 False,根本不是一个字符串……

  • 資深大佬 : nightv2

    我数了一下单引号,好像括号里面不能组成一个字符串吧?

  • 資深大佬 : crella

    关键词 sql 转义

  • 資深大佬 : ruanimal

    “`
    sql = ‘…WHERE name=? and id=?’
    curs.execute(cmd, (name, id))
    “`

    https://bobby-tables.com/python.html

  • 資深大佬 : fucker

    sql = f”select * from f65 where offer in ({‘,’.join(list(map(str, offervalue)))})”

  • 資深大佬 : l4ever

    六正解, sql 语句先整理好, 再用 python 去拼凑.这是两码事.

  • 資深大佬 : dingwen07

    cursor.execute(”’SELECT * FROM “table” where _rowid_=?”’, (rowid,))

  • 資深大佬 : imn1

    每个值是字串的话,最好上引号
    val = ‘,’.join([f'”{v}”‘ for v in offervalue])
    sql = f’select * from f65 where offer in ({val})’
    反正就是拼接字符串,你该去学学 string format 语法了,前置 f 就是 format 的缩略写法
    如果搞不清引号,最外面套三引号就好了,f”’字串”’

  • 主 資深大佬 : youthfire

    @imn1 非常感谢,代码完全符合需求,运行正常.我特意去看了下 f 的信息,能够想到的是
    df = pd.DataFrame(pd.read_sql(f’select * from f65 where offer in {offervalue}’, conn))

    如果可能的话,求教一下,为什么需要遍历 offervalue 里每个元素重新连接,不能用现有的 list 吗? ({val})是转制为 turple 的意思么? 用我的写法跑的时候,pycharm 总是提示不存在 offervalue 这个 table.而我的意思只是想查这个 list,而不是 table

    说的有点乱,当然,您的代码结果是完全正确的,我只是有点不知所以然.

    同时感谢上所有关注的朋友,虽然代码我限于能力没有一一尝试.

  • 資深大佬 : imn1

    @youthfire #10
    {offervalue} 这样写是不对的,你能正常估计是 tuple,tuple 左右是圆括号,repr 刚好符合 sql 语法
    如果是 list 左右方括号,repr 出来就是[val1, val2…],这个在 sql 就要报错了

  • 資深大佬 : levelworm

    fstring 就可以了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具