pyodbc mysql_pyodbc and mySQL

问题

I am unable to connect to mySQl db using pyodbc.

Here is a snippet of my script:

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

I get this error at the pyodbc.connect() line:

pyodbc.Error: ('IM002', '[IM002]

[Microsoft][ODBC Driver Manager] Data

source name not found and no default

driver specified (0)

(SQLDriverConnectW)')

I have another question regarding this error (and Python scripts in general). When I run this as a script, it fails silently (I was expecting a stack trace). I have to type each line in manually to find where the error occured.

I am being a bit lazy for now (no exception handling) - is this normal behaviour of a Python script without exception handling to fail silently?

[Edit]

I am not using mysqldb because I am already using pyodbc to extract my data from another source (MS Access). Ok, not a good reason - but I am already grappling with pyodbc and I dont really fancy having to wrestle with another library/module/package(whatever its called in Python) for a "one off" job. I just want to move my data of from various data sources in the Windows environment to mySQl on Linux. once on Linux, I'll be back on terra firma.

That is the entire 'script' right there. I just saved the code above into a file with a .py extension, and I run python myscript.py at the command line. I am running this on my XP machine

回答1:

MySQLdb (or oursql) and pyodbc both have the same interface (DB-API 2), only you don't have to deal with ODBC's issues if you use the former. I strongly recommend you consider using MySQLdb (or oursql) instead.

回答2:

First, According to the official docs, if you want to connect without creating a DSN, you need to specify OPTION=3 in the connection string:

ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=venu;PASSWORD=venu;OPTION=3;"

If that fails to work, I'd further troubleshoot by creating a DSN.

Second, no Python should not be failing silently. If that is the case when you run your script, there is something else amiss.

回答3:

I had this same mistake so I went over all the version I was using for the connection. This is what I found out:

For Python 2.7 32 bits:

- pyodbc must be 32bits

- the DB Driver must be 32bits. (Microsoft Access should be 32 bits too)

For those who use the 64 bits version. You should check that everything is 64 bits too.

In my case I was trying to connecto to an Oracle DB and Microsoft Access DB so I had to make the following components match the architechture version:

pyodbc (MS Access)

python

cx_Oracle (Oracle dialect for SQLalchemy)

Oracle instantclient basic (Oracle. Do not forget to create the environment variable)

py2exe (Making the excecutable app)

回答4:

only need install mysql-connector-odbc-3.51.28-win32.msi.

and pyodbc-2.1.7.win32-py2.7.exe.

of course, you have ready installed MySQL and python 2.7.

example:

import pyodbc

cndBase = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; PORT=3306;DATABASE=nameDBase; UID=root; PASSWORD=12345;")

ptdBase = cndBase.cursor()

query_str = 'SELECT* FROM nameTabla;'

rows = ptdBase.execute(query_str)

for rw in rows:

print list(rw)`enter code here`

回答5:

Is that your driver name right?

You can check your driver name in

Windows -> Control panel -> System and security -> Administrative tools -> ODBC Data Sources -> Driver tab

then copy the river name to the first parameter

like

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=localhost;DATABASE=books; UID=root; PASSWORD=password;")

And my problem solved

or you may not install the driver and the step is simple.

回答6:

I was getting the same error. It seemed the driver i was using to make the connection was not the driver installed in my system.

Type ODBC on windows run and select ODBC Data Source(32/64) based on where you have installed the driver.

From there click on System DSN and click add. From there you can see the MySQL driver installed in your system. Use the ANSI driver in your code where you are making the connection.

来源:https://stackoverflow.com/questions/3982174/pyodbc-and-mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值