我有一个psycopg连接:
conngre = psycopg2.connect("host='blah' port='blah' dbname='blah' user='blah' password='blah'")
conngre = conngre.cursor()
with open('exportgre', 'r') as selectexport:
var1 = selectexport.read()
conngre.execute(var1)
这会调用我想要的结果集,然后将其转储到带有连接的SQL Server预定义表中:
sqlconn = pyodbc.connect(r'DSN=d;UID=blah;PWD=blah')
cursql = sqlconn.cursor()
with open('importsql', 'r') as selectexport:
var2 = selectexport.read()
cursql.execute(var2)
是否可以将第一个结果集中的结果传递给第二个结果集的插入?
我现在运行以下代码作为测试,以便在使用我的实际sql之前使其工作:
import pyodbc
sqlconn = pyodbc.connect(r'DSN=d;UID=blah;PWD=blah')
cursql = sqlconn.cursor()
with cursql.execute("select * from blah.dbo.export_test"):
rows = cursql.fetchall()
for row in rows:
cursql.execute('insert into TouchStar.dbo.export_test values (?)', (row[0]))
print(row)
然而,它似乎只是覆盖表中已有的数据?
我需要以某种方式附加吗?
答案 0 :(得分:1)
你想在中间使用Python词典。首先,使用RealDictCursor从PostgreSQL中选择:
<Import Project="..\packages\X.3.3.2.0\build\X.props" Condition="Exists('..\packages\X.3.3.2.0\build\X.props')" />
<Error Condition="!Exists('..\packages\X.3.3.2.0\build\X.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\X.3.3.2.0\build\X.props'))" />
对于“selectexport”中的每个SELECT语句,这将运行查询,并循环遍历行。对于每一行,它将插入到pyodbc游标中。您必须修改insert语句才能适应。祝你好运!