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 语句的一部分,具体解释如下:
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 语句中的列。
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
对应相应的值。