python查库写库例子
环境:
python2.7和python3.6都可以执行
方法1:字段拼接
#!/usr/bin/python3
import pymysql
import smtplib
import datetime
import time
now_time = datetime.datetime.now()
yes_time = now_time + datetime.timedelta(days=-1)
select_sql = "select id,user,host,db,command,time,state,info from tb_run_long_sql limit 1"
select_mysqlserver="192.168.1.113"
select_username="root"
select_password= "yeemiao1117"
select_dbname="db_admin"
insert_mysqlserver="192.168.1.113"
insert_username="root"
insert_password= "yeemiao1117"
insert_dbname="db_admin"
def query_data() :
# 打开数据库连接
db = pymysql.connect(select_mysqlserver,select_username, select_password, select_dbname)
##print(sqltext)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
try:
cursor.execute(select_sql)
result_data = cursor.fetchall()
except Exception as e:
print(e)
db.close()
return result_data
def insert_data (querydata) :
db = pymysql.connect(select_mysqlserver,select_username, select_password, select_dbname)
insert_sql="""insert into tb_run_long_sql_readonly(id,user,host,db,command,time,state,info) values (%s,%s,%s,%s,%s,%s,%s,%s)"""
cursor = db.cursor()
for row in querydata:
try:
l_id=row[0]
l_user="'" + row[1]+"'"
l_host="'" + row[2]+"'"
l_db="'"+ row[3] +"'"
l_command="'" + row[4]+ "'"
l_time=row[5]
l_state="'"+ row[6] + "'"
l_info="'" + str(row[7]) + "'"
insersql="insert into tb_run_long_sql_readonly ( id,user,host,db,command,time,state,info) values (%s,%s,%s,%s,%s,%s,%s)" % (l_id, l_user, l_host, l_db, l_command, l_time, l_state,l_info)
print(insersql)
##cursor.execute("insert into tb_run_long_sql_readonly(id,user,host,db,command,time,state,info) values (%s,%s,%s,%s,%s,%s,%s,%s)" % (l_id,l_user,l_host,l_db,l_command,l_time,l_state,l_info))
except Exception as e:
print(e)
db.commit()
db.close
if __name__ == '__main__' :
querydata=query_data()
insert_data(querydata)
方法2:直接写入(多记录写入,不好的地方就是查出的字段和写入的字段要保持一致)
#!/usr/bin/python3
import pymysql
import smtplib
import datetime
import time
now_time = datetime.datetime.now()
yes_time = now_time + datetime.timedelta(days=-1)
select_sql = "select id,user,host,db,command,time,state,info from tb_run_long_sql where time>0 and info is not null and user not in ('dmladmin') and db not in ('db_admin') limit 100"
select_mysqlserver="192.168.1.113"
select_username="root"
select_password= "123456"
select_dbname="db_admin"
insert_mysqlserver="192.168.1.113"
insert_username="root"
insert_password= "123456"
insert_dbname="db_admin"
def query_data() :
# 打开数据库连接
db = pymysql.connect(select_mysqlserver,select_username, select_password, select_dbname)
##print(sqltext)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
try:
cursor.execute(select_sql)
result_data = cursor.fetchall()
record_cnt = len(result_data)
except Exception as e:
print(e)
db.close()
return result_data,record_cnt
def insert_data (querydata) :
db = pymysql.connect(insert_mysqlserver,insert_username, insert_password, insert_dbname)
insert_sql="""insert into tb_run_long_sql_readonly(id,user,host,db,command,time,state,info) values (%s,%s,%s,%s,%s,%s,%s,%s)"""
cursor = db.cursor()
cursor.executemany(insert_sql,querydata)
db.commit()
db.close
if __name__ == '__main__' :
(querydata,record_cnt) = query_data()
if ( record_cnt > 0) :
insert_data(querydata)
方法2:字段拼接(\"%s\"处理字段有特殊符号的,比如单引号)
# -*- coding: utf-8 -*-
import pymysql
import smtplib
import datetime
import time
now_time = datetime.datetime.now()
yes_time = now_time + datetime.timedelta(days=-1)
select_sql = "select id,user,host,db,command,time,state,info from information_schema.processlist where time>0 and info is not null and user not in ('dmladmin') and db not in ('db_admin') limit 100"
##select_sql="select id,user,host,db,command,time,state,info from db_admin.tb_run_long_sql limit 5"
select_username="myuser"
select_password= 密码
port=3306
##select_dbname="db_admin"
insert_mysqlserver="rds3.mysql.rds.aliyuncs.com"
insert_username="myuser"
insert_password= 密码
insert_dbname="db_admin"
def query_data(rds_url,username,password,port) :
# 打开数据库连接
db = pymysql.connect(host=rds_url,user=username, password=password,port=port)
##print(sqltext)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
try:
cursor.execute(select_sql)
result_data = cursor.fetchall()
record_cnt = len(result_data)
except Exception,e:
print(e)
db.close()
return result_data,record_cnt
def insert_data (querydata,rds_flag) :
db = pymysql.connect(insert_mysqlserver,insert_username, insert_password, insert_dbname)
cursor = db.cursor()
l_rds_flag=rds_flag
for row in querydata:
try:
l_id=row[0]
l_user=row[1]
l_host=row[2]
l_db=row[3]
l_command=row[4]
l_time=row[5]
l_state=row[6]
##l_info="'" + str(row[7]) + "'"
l_info=row[7]
insertsql="insert into tb_run_long_sql_alldb(rds_flag,id,user,host,db,command,time,state,info) values (%s,%s,\"%s\",\"%s\",\"%s\",\"%s\",%s,\"%s\",\"%s\")" % \
(l_rds_flag,l_id, l_user, l_host, l_db, l_command, l_time, l_state,l_info)
##print(insertsql) ##采用\"%s\"目的是处理sql语句里包含特殊符号的sql,比如单引号
cursor.execute(insertsql)
except Exception, e:
print(e)
db.commit()
db.close
if __name__ == '__main__' :
rds_url = {'rds1':'rds1.mysql.rds.aliyuncs.com',\
'rds2':'rds2.mysql.rds.aliyuncs.com'}
for key in rds_url:
if key == 'rds1':
rds_flag=1
if key == 'rds2':
rds_flag=2
url=rds_url[key]
##print(url)
(querydata,record_cnt) = query_data(url,select_username,select_password,port)
print(record_cnt)
if ( record_cnt > 0) :
insert_data(querydata,rds_flag)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?