很老的一个项目,用的是很老的interbase7.5的数据库,想对它进行读写。手上只有一个32位的ODBC驱动。
系统环境是:
1、64位Win7。
2、64位的Pycharm安装了64位的python3.7 (使用anaconda)
3、在Win7里面使用 C:\Windows\SysWOW64\odbcad32.exe配置好了32位的驱动
/
4、使用pyodbc来连接数据库
发现pyodbc的驱动只有64位的驱动,没有32位的驱动
怎么办,找了很多文章,还是用anaconda多安装了一个32位的python
怎么用anaconda安装32位python可以见
https://blog.csdn.net/vample/article/details/88877745
5、安装了32的python发现可以找到32位的驱动了
import pyodbc
hostname = '127.0.0.1'
dsnName = 'STATIC'
username = 'SYSDBA'
passwd = 'masterkey'
#interbase套接字
constr = 'DSN=%s;Uid=%s;Pwd=%s'%(dsnName,username,passwd)
cnxn =pyodbc.connect(constr)
cursor =cnxn.cursor()
cursor.execute("select * from station")
rows =cursor.fetchall()
for row in rows:
print(row)
就可以正常访问数据库了,其他ODBC驱动我想也可以一样解决
6、这是访问的charset = NONE的interbase7.5可以正常显示中文,不需要转码
charset = UNICODE_FSS的中文需要转码
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
cnxn.setencoding(encoding='utf-8')
即可正确显示中文
pyodbc使用?作为通配符, [ ]作为参数
self.IB.cursor.execute(""" update station set name=? where id=? """,[name,id]) self.IB.cursor.commit()