爬虫代码中的mysql使用


def get_data(item):
  
    mysqlinfo = {
        "goods_name": "",
        "goods_id": "",
        "url": "",
        "sales": "",
        "normal_price": "",
        "market_price": "",
        "price_info": "",
        "imgone": "",
        "imgtwo": "",
        "imgthree": "",
        "tag_list": "",
        "mall_name": "",
        "mall_id": "",
        "mall_url": "",
        "region": "",
        "category_name": "",
        "category_id": "",
        "category_startname": "",
        "category_oneid": ""
    }





def put_mysql(data):
    table = 't_product'
    db =pool_yp.connection()
    cursors = db.cursor()
    # 获取所有的keys
    keys = ','.join(data.keys())
    values = ','.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
    try:
        if cursors.execute(sql, tuple(data.values())) >= 0:
            db.commit()
            cursors.close()
            db.close()
            print('%s保存成功' % data['goods_name'])
        else:
            print('保持错误')
    except Exception as error:
        print('\033[033m%s\033[0m' % error)  # yellow

问题

keys = ','.join(data.keys())
    values = ','.join(['%s'] * len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)

这段代码如何理解其语法?

举个具体例子:
假设有一个名为 data 的字典,其中包含了一些商品的信息,我们可以使用上述代码构建一个插入数据库的 SQL 语句。以下是一个简单的例子:

data = {
    'goods_name': '商品A',
    'goods_id': '123456',
    'price': 19.99,
    'quantity': 100,
    'category': '电子产品'
}

# 假设数据库表名为 't_product'
table = 't_product'

# 获取所有的keys
keys = ','.join(data.keys())

# 构造占位符 '%s' 的列表,与 values 对应
values = ','.join(['%s'] * len(data))

# 构建 SQL 语句
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)

print("构建的 SQL 语句为:")
print(sql)

在这个例子中,我们有一个包含商品信息的字典 data。通过该字典,我们构建了一个 SQL 语句,用于将商品信息插入数据库表 t_product。在构建的 SQL 语句中,keys 包含了所有字典的键,values 是占位符 %s 的重复。最终输出构建的 SQL 语句。

这两段代码用于构建插入数据库的 SQL 语句的一部分,具体解释如下:

  1. keys = ','.join(data.keys())

    • data.keys() 获取字典 data 中的所有键。
    • ','.join(...) 使用逗号将这些键连接成一个字符串。

    例如,如果 data{'goods_name': '商品A', 'goods_id': '123456', 'price': 19.99},那么 keys 将会是一个字符串 'goods_name,goods_id,price',这表示 SQL 语句中的列。

  2. values = ','.join(['%s'] * len(data))

    • ['%s'] * len(data) 创建一个包含 %s 占位符的列表,其长度与 data 字典中的键值对数量相同。
    • ','.join(...) 使用逗号将这些占位符连接成一个字符串。

    例如,如果 data 中有 3 个键值对,那么 values 将会是一个字符串 '%s,%s,%s',这表示 SQL 语句中的值的占位符。

最终,这两部分字符串将会被用于构建插入数据库的 SQL 语句,形成类似于 INSERT INTO table_name (keys) VALUES (values) 的结构。这样的 SQL 语句用于将数据插入数据库表中,keys 对应表的列,而 values 对应相应的值。

你可能感兴趣的:(mysql,数据库,爬虫)