Python MYSql.connector不会插入数据

时间:2016-06-21 14:56:34

标签: python mysql mysql-python bioinformatics

我正在尝试将一些数据插入到我正在制作的数据库中,但它不会插入。我确实在其他代码上使用了相同的插入方法,它似乎仍然有效,但是这个人拒绝。救命啊!

from Bio import Entrez
from sys import exit
Entrez.email = "A.N.Other@example.com"     # Always tell NCBI who you are
sranumber = raw_input("Input SRA number here")
sranumber2= raw_input("re-type SRA number here")
while True:
    if sranumber != sranumber2:
         print "SRA numbers do not match"
         sranumber2 = raw_input("Please re-type sra number to match intitial sra number")
         continue   
    else:
        break
print "SRA ID:" + sranumber
#answer = raw_input("Are you sure this is the sra number you wish to use? Type Y/N")
while True:
    answer = raw_input("Are you sure this is the sra number you wish to use? Type Y/N")
    if answer == "Y":
        print "Let's do it!"
        break
    elif answer == "y":
        print "Let's do it!"
        break
    elif answer == "yes":
        print "Let's do it!"
        break
    elif answer == "YES":
        print "Let's do it!"
        break
    elif answer == "N":
        exit()
    else:
        print "Not a valid answer"
search = Entrez.esearch(term = sranumber, db = "SRA", retmode = "xml")
record = Entrez.read(search, validate = False)
newstuff = record
#print newstuff
for j in record:
    if j == "WarningList":
        newstuff = record['WarningList']
#print newstuff
poop = newstuff
for item in poop:
    if item == "OutputMessage":
        poop = poop['OutputMessage']
#print poop
crap = ['Wrong UID' + " " + sranumber]
cool =  "'"+crap[0]+"'"
#print cool
continuity = ''
for j in poop:
    if j  == 'No items found.' or j == cool:
        print "[-] This is not a valid SRA identity"
        continuity = 'done'
if continuity == 'done':
    exit()
print "[+] This is a valid SRA identity"
print "SRA ID:" + sranumber


condition = raw_input("Type in the condition of your ngs_data here")
condition2 = raw_input("re-type the condition of your ngs_data here")
print condition
while True:
    if condition != condition2:
        print "Conditions do not match!"
        condition2 = raw_input("Please retype condition here to match first condition")
    else:
        break
print "just dropped in to check on what condition my condition was in"
stuff = []
stuff.append(sranumber)
stuff.append(condition)
stuff2 = '+'.join(stuff)
print stuff2
stuff3 = stuff2.split('+')
print stuff3
experiment = [tuple(stuff3)]
print experiment
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

def insert_books(experiment):
    query = "INSERT IGNORE INTO organisms(sra#, condition) " \
                "VALUES(%s,%s)"

    try:
        db_config = read_db_config()
        conn = MySQLConnection(**db_config)

        cursor = conn.cursor()
        cursor.executemany(query, experiment)

        conn.commit()
    except Error as e:
        print('Error:', e)

    finally:
        cursor.close()
        conn.close()

def main():

    insert_books(experiment)

if __name__ == '__main__':
        main()

1 个答案:

答案 0 :(得分:0)

我最终只是这样做了,终于奏效了。我不确定为什么它之前没有用,但我相信这与我在列中输入的格式有关。

from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

cnx = mysql.connector.connect(user='root',password='*****',database = 'new')
cursor = cnx.cursor()
addstuff= ("INSERT IGNORE INTO experiment (`sra`, `condition`) VALUES(%s,%s)")
cursor.execute(addstuff,stuff3)
cnx.commit()
cursor.close()
cnx.close()