import pymssql
import time
import datetime
sql_insert = """
insert 数据库名.dbo.t_jl_数据库表名 values (
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,
%s,%s,%s,%s,%s,%s,%s
)
""" #定义一个插入数据库的语句,上面中多个%s是数据库表中的列数加2
while True:
try:
cn_server = pymssql.connect( #服务器数据库连接,就是要被插入数据的数据库服务器
host = '172.16.221.221',
port = 1433,
user = 'aa',
password = '668977'
)
cn_cems = pymssql.connect( #现场数据库连接,就是要提取数据的数据库服务器
host = '172.16.87.66',
port = 1433,
user = 'admin',
password = '235689',
database = 'cems_control'
)
cr_server = cn_server.cursor() #服务器数据库游标
cr_cems = cn_cems.cursor() #现场数据库游标
cr_server.execute("select max(id) id from 数据库.dbo.t_jl_数据库中的表") #从服务器读取最后记录的id
begin_datetime = cr_server.fetchone()[0]
cr_cems.execute("select * from cems_control.dbo.soot1 where id > %s",(begin_datetime)) #从现场数据库读取数据
data_records = cr_cems.fetchall()
for l in data_records:
cr_server.execute(sql_insert,l) #写入服务器数据库
cn_server.commit()
cn_server.close()
cn_cems.close()
print("\n导入",len(data_records),"行数, 时间: ",datetime.datetime.now())
except pymssql.OperationalError as e:
print("\n出错, 时间: ",datetime.datetime.now(),e) #打印运行的情况
finally:
time.sleep(800) #暂停800秒