用python把postgresql中的表内容复制到mysql中

postgresql中的表和mysql中的表结构不一样,过程中做点转换,特别是datetime的insert

还有activated 字段在原表中是布尔型,mysql表中是tinyint型

 

 

import psycopg2
import MySQLdb
import datetime, time


psycopg2_conn = psycopg2.connect(
        database="expat", 
        user="david", 
        password="1", 
        host="localhost", 
        port="5432"
    ) 
mysql_conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='1',
        db ='blog',
    )


def get_user_data():
    cur = psycopg2_conn.cursor()
    cur.execute("SELECT * FROM auth_user;")
    rows = cur.fetchall() 
    cur.close()
    psycopg2_conn.commit()
    psycopg2_conn.close()

    return rows
#get_user_data()


def save_user_to_mysql(rows):
    cur = mysql_conn.cursor()
    for row in rows:
        newrow = list()
        newrow.append(row[0]) # 0 id 
        newrow.append(row[4]) # 1 name
        newrow.append(row[7]) # 2 email
        newrow.append('') # 3 password
        newrow.append(1) if row[9] is True else newrow.append(0) # 5 activated
        newrow.append(0)      # 6 banned
        r2 = row[2]
        last_login = datetime.datetime(r2.year, r2.month, r2.day, r2.hour, r2.minute, r2.second)
        last_login = last_login.strftime('%Y-%m-%d %H:%M:%S')

        newrow.append(last_login) # 9 last_login
        newrow.append(0) # 12 protected
        r10 = row[10]
        created_at = datetime.datetime(r10.year, r10.month, r10.day, r10.hour, r10.minute, r10.second)
        created_at = created_at.strftime('%Y-%m-%d %H:%M:%S')
        newrow.append(created_at) #  13 created_at
        newrow.append(row[1]) # 16 password_old

        sql = '''
            insert into users(id, name, email, password, activated, banned,last_login,protected, created_at,password_old) 
                       values(%d, '%s', '%s',  '%s',     %s,        %d,    '%s',        %d,        '%s',        '%s')
        ''' % tuple(newrow)
        print sql
        cur.execute(sql) 

        if row[3] is True: # is_superuser is True
            cur.execute('''
                insert into users_groups (user_id, group_id)
                values(%d, 1)
                &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值