m0_37908418
2021-07-14 11:43
采纳率: 85.7%
浏览 92

python 从excel取出数据 作为sql 查询参数方法

data=pd.read_excel(r'C:\Rep012.xlsx',header=0) sql=select * from user where code1 in(%s)
cur.execute(sql,data)
报错:
valueerror:The truth value of aDataFrame is ambiguous. use a.empty,a.bool(),a.item(),a.any()
可有其它已经实践可用方法

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • CSDN专家-HGJ 2021-07-14 14:05
    已采纳

    从表格中读取数据,要取某列作为查询字段,修改sql查询语句,参数要用元组形式。示例供参考:

    import pandas as pd 
    import sqlite3
    
    conn=sqlite3.connect('data/1.db')
    cur=conn.cursor()
    df=pd.read_excel('data/1.xlsx')
    code1=df['查询2'].dropna()
    sql = f'''select * from students where name in {tuple(code1)}''' 
    for x in cur.execute(sql):
        print(x)
    
    已采纳该答案
    1 打赏 评论
  • CSDN专家-黄老师 2021-07-14 11:47

    你print(data)和print(type(data))看看数据和数据类型,然后print(sql)看看数据就知道什么问题了

    打赏 评论
  • m0_37908418 2021-07-14 15:22

    thanks,我按照执行时有两个问题请教下,
    1sqlite3连接方式,不是太懂。我是用的pymssql,
    2.execute执行时报错AttributeError: 'NoneType' object has no attribute 'fetchall'

    打赏 评论
  • m0_37908418 2021-07-14 16:00

    @CSDN专家-HGJ 我的excel中只有一列数据,你可以看下面图片,现在说对象不能迭代

    img

    打赏 评论
  • m0_37908418 2021-07-15 14:36

    看下面图 其实已经通过sql 得到list 中值,但ata=cur.fetchall()执行时错误,是因为需要在每个list 值两边加''号吗?查资料好像无这要求。麻烦看下

    打赏 评论
  • m0_37908418 2021-07-15 14:45

    2

    打赏 评论
  • m0_37908418 2021-07-15 14:51

    改成fetchone 已经可以 但是通过查询条件值能查出一条记录,要怎样根据所有查询条件重新取得值呢,一定要用fetchall吗

    img

    打赏 评论

相关推荐 更多相似问题