我的代码如下:
import pg
import MySQLdb
db_postgre = pg.connect(dbname=...,user=...,passwd=...,host=.., port=...)
db_mysql=MySQLdb.Connect(user=...,passwd=...,db=..., host=...)
cur = db_mysql.cursor(MySQLdb.cursors.DictCursor)
cur.execute ("""SELECT X,Y,Z FROM tab_a""")
data = crs.fetchall ()
for row in data :
#INSERT THE ROW (X,Y,Z) TO POSTGRESQL TABLE.
PostgreSQL中的表(post_tab_a
)与MySQL中的表相同。
意思是它也有X,Y,Z
所有类型都是TEXT
。
是否可以直接从cur
执行插入?这种插入的最简单方法是什么?
答案 0 :(得分:1)
只需打开Postgre的另一个光标即可进行迭代插入。由于表格与其光标/连接对象相对应,因此不存在任何命名混淆:
import pg
import MySQLdb
# DB CONNECTIONS
db_postgre = pg.connect(dbname=...,user=...,passwd=...,host=.., port=...)
db_mysql = MySQLdb.Connect(user=...,passwd=...,db=..., host=...)
# CURSORS
mycur = db_mysql.cursor()
postcur = db_postgre.cursor()
mycur.execute("SELECT X,Y,Z FROM tab_a")
for row in mycur.fetchall():
postcur.execute("INSERT INTO tab_a (X,Y,Z) VALUES (%s, %s, %s)", \
(row['X'], row['Y'], row['Z']))
db_postgre.commit()
# CLOSE CURSORS
postcur.close()
mycur.close()
# CLOSE CONNECTIONS
db_postgre.close()
db_mysql.close()