从MySQL插入数据到Postgresql

时间:2016-04-10 11:47:09

标签: python mysql postgresql

我的代码如下:

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执行插入?这种插入的最简单方法是什么?

1 个答案:

答案 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()