看了不少文章,mysql 的odbc 驱动因为版本的问题,没找到适合 ubuntu 18的。
折腾一下,把过程帖出来给大家参考。
1、安装unixODBC
这个有很多详细的介绍,帖一下命令即可。我下的是2.3.4
sudo wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
tar -xvzf unixODBC-2.3.4.tar.gz
cd unixODBC-2.3.4/
sudo ./configure --sysconfdir=/etc
make
sudo make install
检验是否安装成功
odbcinst -j
2、安装mysql odbc驱动
从mysql 站点下载对应的驱动
https://dev.mysql.com/downloads/connector/odbc/
我下的是8.0.15
mysql-connector-odbc-8.0.15-linux-ubuntu18.04-x86-64bit.tar.gz
解压,拷贝bin及lib 目录到 /usr/local 下。
sudo tar zxvf mysql-connector-odbc-8.0.15-linux-ubuntu18.04-x86-64bit.tar.gz
cd mysql-connector-odbc-8.0.15-linux-ubuntu18.04-x86-64bit/
sudo cp bin/* /usr/local/bin
sudo cp lib/* /usr/local/lib
设置
// Registers the Unicode driver:
sudo myodbc-installer -a -d -n "MySQL ODBC 8.0 Driver" -t "Driver=/usr/local/lib/libmyodbc8w.so"
// Registers the ANSI driver
sudo myodbc-installer -a -d -n "MySQL ODBC 8.0" -t "Driver=/usr/local/lib/libmyodbc8a.so"
验证是否安装成功
myodbc-installer -d -l
看到列表里有
MySQL ODBC 8.0 Driver
MySQL ODBC 8.0
即代表安装成功。
3、设置ODBC 参数
sudo vi /etc/odbc.ini
增加以下内容
[mysql]
Description = Data source MySQL
Driver = MySQL ODBC 8.0 Driver
Server = 192.168.1.80
Host = 192.168.1.80
Database = test
Port = 3306
User = user1
Password = 123456
一般是通过uncode 方式连接,Driver 必须是MySQL ODBC 8.0 Driver ,
其他参数按mysql server 的设置。Database 选择已经建立好的数据库。
4、测试连接
运行
isql mysql
sjzx@sjzx:~/dev$ isql mysql
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from test limit 2;
+---------------------------------------------------+-----------+
| name1 | age |
+---------------------------------------------------+-----------+
| xie | 20 |
| zhang | 22 |
+---------------------------------------------------+-----------+
SQLRowCount returns 2
2 rows fetched
5、关于Python 连接
先安装pyodbc
# coding=UTF-8
# by 陈年椰子
import pyodbc
try:
print("connecting ...")
cnxn = pyodbc.connect("DSN=mysql")
cursor = cnxn.cursor()
rows = cursor.execute("select * from test").fetchall()
print(rows)
cursor.close()
print("done!")
except Exception as e:
print(repr(e))