0
import MySQLdb
import pyodbc


typesFile = open('servinfo.txt', 'r').readlines()
dataTypes = dict((row.split(',')[0].strip(),row.split(',')[1].strip()) for row in typesFile)   


conn = pyodbc.connect('DRIVER={FreeTDS}; SERVER=prsoft; DATABASE=blueseas; UID=sa;    PWD=tiger')
msCursor = conn.cursor()


db = MySQLdb.connect(passwd="pr", db="tenable")
myCursor = db.cursor()

msCursor.execute("SELECT * FROM airlinemaster WHERE type='U'") 
dbTables = msCursor.fetchall()
noLength = [56, 58, 61] 

for tbl in dbTables:
msCursor.execute("SELECT * FROM airlinemaster WHERE airline = air india('%s')" % tbl[0]) #syscolumns: see sysobjects above.
columns = msCursor.fetchall()
attr = ""
for col in columns:
colType = dataTypes[str(col.xtype)] 


if col.xtype == 60:
    colType = "float"
    attr += col.name +" "+ colType + "(" + str(col.length) + "),"
elif col.xtype in noLength:
    attr += col.name +" "+ colType + ","
else:
    attr += col.name +" "+ colType + "(" + str(col.length) + "),"

attr = attr[:-1]
myCursor.execute("CREATE TABLE " + tbl[0] + " (" + attr + ");") #create the new table and all columns
msCursor.execute("select * from %s" % tbl[0])
tblData = msCursor.fetchall()

#populate the new MySQL table with the data from MSSQL
for row in tblData:
fieldList = ""
for field in row:
    if field == None: 
    fieldList += "NULL,"
    else:
    field = MySQLdb.escape_string(str(field))
    fieldList += "'"+ field + "',"

fieldList = fieldList[:-1]
myCursor.execute("INSERT INTO " + tbl[0] + " VALUES (" + fieldList + ")" )

データをインポートするために上記のコードをさまざまな方法で試しました..しかし、リストインデックスが範囲外であるため、依然としてエラーが発生し続けます..どこが間違っているのかわかりません..どうすれば解決できますか?

 Traceback (most recent call last):
 File "C:\Python27\programs new\codes.py", line 10, in <module>
 dataTypes = dict((row.split(',')[0].strip(),row.split(',')[1].strip()) for row in typesFile)
 File "C:\Python27\programs new\codes.py", line 10, in <genexpr>
 dataTypes = dict((row.split(',')[0].strip(),row.split(',')[1].strip()) for row in typesFile)
 IndexError: list index out of range

plsは助けてください....thnx事前に..

4

1 に答える 1

1

カンマが含まrowtypesFileていないものが少なくとも 1 つあります。,

>>> 'line without a comma'.split(',')
['line without a comma']
>>> 'line without a comma'.split(',')[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

servinfo.txtが 2 列のコンマ区切りファイルであると想定されている場合、代わりにモジュールを使用して読み取ってみませんかcsv?

import csv
csvreader = csv.reader(open('servinfo.txt', 'rb'))
dataTypes = dict(csvreader)

そのファイルにカンマのない行があるという問題は解決しませんが、最初にそれを修正する必要があります。

于 2012-12-10T09:09:28.430 に答える