gpt4 book ai didi

python - 使用 Python 将数据从 MSSQL 数据库复制到 Postgresql 数据库

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:06 24 4
gpt4 key购买 nike

我有两个 2 数据库。一个使用 MSSQL,另一个使用 Postgresql。我希望我的 python 脚本每天都在运行(为此我在 linux 上使用 cron-job)。MSSQL 数据库中的数据应复制到 Postgresql 数据库中。我有一个想法,但行不通。你可以帮帮我吗???也许我的解决方案是完全错误的...

这是我的代码:

import pymssql, psycopg2

class DatabaseRequest:

def __init__(self):
self.conn1 = pymssql.connect(host='****', user='****', password='****', database='****')
self.conn2 = psycopg2.connect("dbname='****' user='****' host='*****' password='****'")

self.cur1 = self.conn1.cursor()
self.cur2 = self.conn2.cursor()

def request_proc(self, rows):
self.cur1.execute("SELECT top 10 tag, site, plant, unit, line, ProcessID AS pid, Count(ReadTime) AS mods \
FROM ( \
select dateadd(dd, -1, convert(varchar, getDate(),111)) \
as tag, ReadTime, processID, subid, PR.Site, PR.Plant, PR.Unit, PR.Line \
from FactBarcodeReading BCR with(nolock) \
inner join DimProcess PR on BCR.ProcessKey = PR.ProcessKey \
where PR.ProcessID IN (802, 1190, 1800, 3090, 3590, 4390, 4590, 4800, 5000, 5400, 4190) \
and ReadTime between dateadd(dd, -1, convert(varchar, getDate(),111)) and dateadd(dd, -0, convert(varchar, getDate(),111)) \
) a \
GROUP BY tag, site, plant, unit, line, ProcessID \
ORDER BY site, plant, unit, line, ProcessID")

rows = self.cur1.fetchone()

# return rows


def insert_proc(self):
self.cur2.execute("INSERT INTO 20091229global (proddate, site, plant, unit, line, pid, mods) \
VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"
% self.cur1.fetchone())


a = DatabaseRequest()
print a.insert_proc()

PS:request_proc 工作正常。

最佳答案

如果代码没有产生错误,但插入的记录没有出现在 Postgresql 数据库中,您很可能需要在执行 INSERT 语句后添加 self.conn2.commit()。这会将每个事务提交到数据库。

根据documentation , 也可以启用自动交易。

关于python - 使用 Python 将数据从 MSSQL 数据库复制到 Postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com