PYTHON MySql数据库的插入、更新与查询

一、动态插入

1.传入字典

2.构造sql语句

3.插入

import pymysql

db = pymysql.connect(host='localhost',user='root',password='',port=3306,db='scrapy_db')
cursor = db. cursor()   #数据库连接
data = {
    'num':'22',
    's_name':'tang2'
}
table ='scrapy' 
keys =','.join(data. keys()) 
values = ','.join(['%s'] * len(data)) 
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ' .format(table=table, keys=keys, values=values) 
print(sql) # INSERT INTO scrapy(num,s_name) VALUES (%s,%s)
try:
    if cursor. execute(sql, tuple(data. values())): 
        print('Successful')
        db.commit()
except: 
    print('Fail')
    db.rollback()
db.close()

二、动态更新

在插入语句后添加代码ON DUPLICATE KEY UPDATE。 如果主键已经存在,就执行更新操作。

import pymysql

db = pymysql.connect(host='localhost',user='root',password='',port=3306,db='scrapy_db')
cursor = db. cursor() 
data = {
    'num':'22',
    's_name':'tang3'
}
table ='scrapy' 
keys =','.join(data. keys()) 
values = ','.join(['%s'] * len(data)) 
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE ' .format(table=table, keys=keys, values=values) 
print(sql) 
#INSERT INTO scrapy(num,s_name) VALUES (%s,%s) ON DUPLICATE KEY UPDATE num = %s,s_name = %s
update = ','.join(['{key} = %s'.format(key=key) for key in data])
sql +=update
print(sql)
try:
    if cursor. execute(sql, tuple(data.values())*2): 
        print('Successful')
        db.commit()
except: 
    print('Fail')
    db.rollback()
db.close()

三、查询

import pymysql

db = pymysql.connect(host='localhost',user='root',password='t15086976922',port=3306,db='scrapy_db')
cursor = db. cursor() 
sql = 'SELECT * FROM scrapy WHERE num > 20'
try: 
    cursor.execute(sql) 
    print('Count:', cursor.rowcount) 
    one = cursor. fetchone () 
    print('one', one)
    results = cursor. fetchall() 
    print('Results:', results) 
    print('Results Type :', type(results)) 
    #1.
    for row in results: 
        print(row) 
    #2.(推荐)
    row = cursor. fetchone()
    while row:
        print('Row', row) 
        row = cursor. fetchone() 
except: 
    print('Error') 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值