2016-06-21 18 views
0

我想將一些數據插入到我正在創建的數據庫中,並且不會插入。我在其他代碼中使用相同的插入方法,它似乎仍然有效,但是這個拒絕。幫幫我!Python MYSql.connector不會插入數據

from Bio import Entrez 
from sys import exit 
Entrez.email = "[email protected]"  # 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

您是否收到任何錯誤?如果你使用'INSERT INTO'而不是'INSERT IGNORE INTO'呢? – alecxe

+0

('Error:',ProgrammingError())這是我得到的唯一錯誤。並且insert into與插入忽略有相同的問題。此表中也沒有外鍵,但一個屬性被引用爲外鍵。 – george135

回答

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