Python 否则你可以加上!太近了!我试着在你的代码中工作,pyCharm告诉我要修改一些东西,但这里是我到目前为止得到的,从我所能告诉你的,在FOR循环中没有做任何事情。。。非常感谢,德米特里!!!我一直在努力实现这一点,虽然没有抛出错误,但没有向数据库提交任何内容

Python 否则你可以加上!太近了!我试着在你的代码中工作,pyCharm告诉我要修改一些东西,但这里是我到目前为止得到的,从我所能告诉你的,在FOR循环中没有做任何事情。。。非常感谢,德米特里!!!我一直在努力实现这一点,虽然没有抛出错误,但没有向数据库提交任何内容,python,postgresql,etl,psycopg2,Python,Postgresql,Etl,Psycopg2,否则你可以加上!太近了!我试着在你的代码中工作,pyCharm告诉我要修改一些东西,但这里是我到目前为止得到的,从我所能告诉你的,在FOR循环中没有做任何事情。。。非常感谢,德米特里!!!我一直在努力实现这一点,虽然没有抛出错误,但没有向数据库提交任何内容。当我打印(sql语句,数据值)时,我得到了以下信息,我认为这是错误的。。。('INSERT INTO“temphoods”(nbhd_id,nbhd_name,type,notes)value(%s,%s,%s,%s);',[37.0,'Hi


否则你可以加上!太近了!我试着在你的代码中工作,pyCharm告诉我要修改一些东西,但这里是我到目前为止得到的,从我所能告诉你的,在FOR循环中没有做任何事情。。。非常感谢,德米特里!!!我一直在努力实现这一点,虽然没有抛出错误,但没有向数据库提交任何内容。当我打印(sql语句,数据值)时,我得到了以下信息,我认为这是错误的。。。('INSERT INTO“temphoods”(nbhd_id,nbhd_name,type,notes)value(%s,%s,%s,%s);',[37.0,'Hilltop',None,None])(对于批处理的第一次迭代…@mapBaker,如果您使用这些字符串参数(即,
%s
用于
37.0
),您将得到与您的版本相同的错误。如果您的基准实际上是一个浮点,则应使用
%f
。如果使用
%s
,则
None
将作为
None
插入Python字符串。我所做的只是将循环聚合到更大的insert语句中,这样可以减少运行insert语句的次数,减少db往返次数。我没有添加任何处理您还没有的实际数据的方法。实际上,假设
execute
做了正确的事情,传递
None
可能是可以的。它应该转换为
NULL
,但是当您指示应该使用字符串时,传递浮点值。。。该操作的失败方式将完全取决于
execute
psycopg2
中执行的操作。。。。它可能会悄悄地失败,没问题。但我想大部分功劳都归于Python作为一种语言。我喜欢它很多年了。这并不是一个真正支持Python的论坛,但我要说的是,看到人们惊讶于它能以如此紧凑和快速的方式完成事情并不罕见。这幅漫画有很多来源,但这是我能找到的最快的来源:太近了!我试着在你的代码中工作,pyCharm告诉我要修改一些东西,但这里是我到目前为止得到的,从我所能告诉你的,在FOR循环中没有做任何事情。。。非常感谢,德米特里!!!我一直在努力实现这一点,虽然没有抛出错误,但没有向数据库提交任何内容。当我打印(sql语句,数据值)时,我得到了以下信息,我认为这是错误的。。。('INSERT INTO“temphoods”(nbhd_id,nbhd_name,type,notes)value(%s,%s,%s,%s);',[37.0,'Hilltop',None,None])(对于批处理的第一次迭代…@mapBaker,如果您使用这些字符串参数(即,
%s
用于
37.0
),您将得到与您的版本相同的错误。如果您的基准实际上是一个浮点,则应使用
%f
。如果使用
%s
,则
None
将作为
None
插入Python字符串。我所做的只是将循环聚合到更大的insert语句中,这样可以减少运行insert语句的次数,减少db往返次数。我没有添加任何处理您还没有的实际数据的方法。实际上,假设
execute
做了正确的事情,传递
None
可能是可以的。它应该转换为
NULL
,但是当您指示应该使用字符串时,传递浮点值。。。该操作的失败方式将完全取决于
execute
psycopg2
中执行的操作。。。。它可能会悄悄地失败,没问题。但我想大部分功劳都归于Python作为一种语言。我喜欢它很多年了。这并不是一个真正支持Python的论坛,但我要说的是,看到人们惊讶于它能以如此紧凑和快速的方式完成事情并不罕见。这幅漫画有很多来源,但这是我能找到的最快的来源:
import psycopg2

connDev = psycopg2.connect("host=host1 dbname=dbname1 user=postgres password=*** ")
connQa = psycopg2.connect("host=host2 dbname=dbname2 user=postgres password=*** ")
curDev = connDev.cursor()
curQa = connQa.cursor()

sql = ('INSERT INTO "tempHoods" (nbhd_name, geom) values (%s, %s);')

curDev.execute('select cast(geom as varchar) from "CCD_Neighborhoods" where nbhd_id = 11;')
tempGeom = curDev.fetchone()

curDev.execute('select nbhd_name from "CCD_Neighborhoods" where nbhd_id = 11;')
tempName = curDev.fetchone()

data = (tempName, tempGeom)

curQa.execute (sql, data)


#commit transactions
connDev.commit()
connQa.commit()

#close connections
curDev.close()
curQa.close()
connDev.close()
connQa.close()
import psycopg2

connDev = psycopg2.connect("host=host1 dbname=dpspgisdev user=postgres password=****")
connQa = psycopg2.connect("host=host2 dbname=dpspgisqa user=postgres password=****")
curDev = connDev.cursor()
curQa = connQa.cursor()

print "Truncating Source"
curQa.execute('delete from "tempHoods"')
connQa.commit()
#Get Data
curDev.execute('select  nbhd_id, nbhd_name, typology, notes, cast(geom as varchar) from "CCD_Neighborhoods";') #cast geom to varchar and insert into geometry column!
rows = curDev.fetchall()


sql_insert = 'INSERT INTO "tempHoods" (nbhd_id, nbhd_name, typology, notes, geom) values '
sql_values = ['(%s, %s, %s, %s, %s)'] #number of columns selecting / inserting


data_values = []

batch_size = 1000 #customize for size of tables... 

sql_stmt = sql_insert + ','.join(sql_values*batch_size) + ';'

for i, row in enumerate(rows, 1):

            data_values += row[:5] #relates to number of columns (%s)
            if i % batch_size == 0:
                curQa.execute (sql_stmt , data_values )
                connQa.commit()
                print "Inserting..."
                data_values = []

if (i % batch_size != 0):
    sql_stmt = sql_insert + ','.join(sql_values*(i % batch_size)) + ';'
    curQa.execute (sql_stmt, data_values)
    print "Last Values..."
    connQa.commit()





# close connections
curDev.close()
curQa.close()
connDev.close()
connQa.close()
sql_insert = 'INSERT INTO "tempHoods" (nbhd_id, nbhd_name, typology, notes, geom) values '
sql_values = ['(%s, %s, %s, %s, %s)']


data_values = []
# you can make this larger if you want
# ...try experimenting to see what works best
batch_size = 100 
sql_stmt = sql_insert + ','.join(sql_values*batch_size) + ';'
for i, row in enumerate(rows, 1):
    data_values += row[:5]
    if i % batch_size == 0:
        curQa.execute (sql_stmt , data_values )
        data_values = []
if (i % batch_size != 0):
    sql_stmt = sql_insert + ','.join(sql_values*(i % batch_size)) + ';'
    curQa.execute (sql_stmt , data_values )