pyodbc和mySQL

sky*_*gle 6 python mysql exception-handling pyodbc

我无法使用pyodbc连接到mySQl db.

这是我的脚本的片段:

import pyodbc
import csv

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost;DATABASE=mydb; UID=root; PASSWORD=thatwouldbetelling;") 
crsr = cnxn.cursor()

with open('C:\\skunkworks\\archive\\data\\myfile.csv','r') as myfile:
    rows = csv.reader(myfile, delimiter=',', quotechar='"')
    for row in rows:
        insert_str = 'INSERT into raw_data VALUES(something, something)'
        print insert_str
        #crsr.execute(insert_str)
    cnxn.commit()
    myfile.close()
Run Code Online (Sandbox Code Playgroud)

我在pyodbc.connect()行收到此错误:

pyodbc.Error:('IM002','[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序(0)(SQLDriverConnectW)')

我有另一个关于此错误的问题(以及一般的Python脚本).当我将其作为脚本运行时,它会无声地失败(我期待堆栈跟踪).我必须手动键入每一行以查找错误发生的位置.

我现在有点懒(没有异常处理) - 没有异常处理的Python脚本的这种正常行为是否会无声地失败?

[编辑]

我没有使用mysqldb,因为我已经在使用pyodbc从另一个源(MS Access)中提取数据.好吧,这不是一个很好的理由 - 但我已经在努力解决pyodbc了,我真的不想与另一个库/模块/软件包(无论是用Python调用)进行"一次性"工作.我只想将Windows环境中各种数据源的数据移动到Linux上的mySQl.一旦在Linux上,我将重新回到terra firma.

这就是整个'剧本'.我刚刚将上面的代码保存到扩展名为.py的文件中,并在命令行运行python myscript.py.我在我的XP机器上运行它

Ign*_*ams 2

MySQLdb(或oursql)和pyodbc都有相同的接口(DB-API 2),只是如果您使用前者则不必处理ODBC的问题。我强烈建议您考虑使用 MySQLdb(或 oursql)。