使用python执行提取转换和加载作业

时间:2019-02-19 08:07:17

标签: python mysql

我正在编写一个简单的程序来帮助在两个mysql数据库之间移动数据,例如,我在每个数据库的两个农夫表之间移动数据。

以下是我正在尝试的代码。

import MySQLdb, sys, pprint, io
from operator import not_

def ViewAllfarmers(myCon):

    cursor = myCon.cursor()

    cursor.execute(" SELECT farmermobile FROM adggtnz.reg02_maininfo")
    rows = cursor.fetchall()
    for row in rows:
        print row[0];
        inserts(myCon,row[0])

    myCon.commit()  

def inserts(myCon,mobile):
    cursor = myCon.cursor()


    print str(mobile)
    strs="insert into adggtnz2.farmers(farmermobile) values ('"+mobile+"')"
    print strs
    cursor.execute(strs)


def main():

    host = '127.0.0.1'  # The MySQL Host
    port=3306 #mysql port
    user = 'root'  # The MySQL User name
    schema = 'adggtnz'  # The MySQL Schema name
    password = 'test'  # The MySQL User password

    try:
        myCon = MySQLdb.connect(host,user, password, schema,port)
        ViewAllfarmers(myCon)

    except MySQLdb.Error, e:
        print "Error %d: %s" % (e.args[0], e.args[1])  # Print the error
        sys.exit(1)  # Exits with error


if __name__ == "__main__":
    main()

此代码的错误:由于以下逻辑错误,我无法将任何数据传输到Farmers表中

Rosemarijn
0613174066
insert into adggtnz2.reg01_maininfo(techname,techmobile ) values ('Rosemarijn','0613174066')
Error 1062: Duplicate entry '0613174066' for key 'PRIMARY'

1 个答案:

答案 0 :(得分:1)

您有一个主键,并试图在Primary Key中添加多个值,因此会出现此错误。我认为问题是忘记了主键行的标识AUTO_INCREAMENT