在MacOS下使用sqlalchemy 连接sqlserver2012 数据库

在MacOS下使用sqlalchemy 连接sqlserver 数据库

前言

最近有要求,要将数据库换成巨硬家的sqlserver 2012 因为在网上苦苦找不到sqlalchemy 配置连接SqlServer的具体中文步骤,翻了官方文档后把步骤整理出来

前期准备

已经安装好sqlalchemy

运行环境介绍

系统:MacOS 10.13.1 Beta Python 环境: 3.6.0 sqlalchemy 1.1.4 pycode 4.0.19 sqlserver 2012

实施步骤

在sqlalchemy里对于连接sqlserver 是这样介绍的 原文地址http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine

Microsoft SQL Server

The SQL Server dialect uses pyodbc as the default DBAPI. pymssql is also available:

pyodbc

engine = create_engine(‘mssql+pyodbc://scott:[email protected]‘)

pymssql

engine = create_engine(‘mssql+pymssql://scott:[email protected]:port/dbname‘)

因此要想使用sqlalchemy 先要配置pyodbc正常使用

安装 pyodbc

如果觉得太慢的话可以后面使用加 -i 参数选择国内源 比如豆瓣

pip3 install pyodbc

pip install pyodbc

配置pyodbc

在Mac os 下pyodbc不是仅仅安装上就可以使用的还需要一些配置才可以 关于pyodbc的官方文档见https://github.com/mkleehammer/pyodbc/wiki

Macos 配置文档见https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX

以下是对文档中步骤的大致翻译

安装Install FreeTDS and unixODBC 使用Mac 上的命令行软件安装工具

brew update
brew install unixodbc
brew install freetds --with-unixodbc

遇到的坑

在安装过程中有可能因为网络原因导致下载的包不完整导致报类似SHA256 Checksum mismatch 的错误,只要根据提示到到下载路径删除掉不完整的包就可以了

Treetds 配置

使用命令得到freetds.conf的位置

tsql -C

然后在这个文件的后面追加自己的sql server 配置

例如:

[MYMSSQL]
host = mssqlhost.xyz.com
port = 1433
tds version = 7.3

关于不同的数据库与对于的tds version看下面http://www.freetds.org/userguide/choosingtdsprotocol.htm通过上面的配置 mac就可以和SqlServer服务器连接上了,可以使用下面的命令连接进入到sql命令行状态

tsql -S MYMSSQL -U myuser -P mypassword

MYMSSQL 在配置文件总给一个数据库连接起的名字

myuser 连接用的用户

mypassword 用户对应的密码

连接成功后的状态

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

可以使用一条sql语句测试一下例如"SELECT @@VERSION"

注意输入完sql语句后 在下一行(enter)输入go才会执行

编辑odbcinst.ini 和 odbc.ini 配置文件

通过命令来 获取odbcinst.ini 和odbc.ini的文件位置

odbcinst -j

将如下内容写入odbcinst.ini

[FreeTDS]
Description=FreeTDS Driver for Linux & MSSQL
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1

将如下内容写入odbc.ini

[MYMSSQL]
Description         = Test to SQLServer
Driver              = FreeTDS
Servername          = MYMSSQL

注意这里的 Servername 就是freetds.conf中配置的名字

接着输入

isql MYMSSQL myuser mypassword

可以输入一些sql语句测试一下

示例代码

通过pyodbc连接数据库
import pyodbc
# the DSN value should be the name of the entry in odbc.ini, not freetds.conf
#将myuser 和mypassword 自己环境中的
conn = pyodbc.connect(‘DSN=MYMSSQL;UID=myuser;PWD=mypassword‘)
crsr = conn.cursor()
rows = crsr.execute("select @@VERSION").fetchall()
print(rows)
crsr.close()
conn.close()

如果能出现结果证明连接正常

通过sqlalchemy 操作数据库 例如创建一张表

#!/usr/bin/env python3
import pyodbc,sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql import sqltypes

ENGINE = create_engine(‘mssql+pyodbc://admin:123[email protected]MYMSSQL‘)
Base = declarative_base()
class Userinfo(Base):
    __tablename__ = ‘userinfo‘
    id = Column(Integer, primary_key=True, autoincrement=True)
    account_id = Column(String(255), nullable=False)
    username = Column(String(255),nullable=False)
    encrypted_password = Column(sqltypes.VARBINARY(500), nullable=False)
    token = Column(String(255))

def init_db():
    Base.metadata.create_all(ENGINE)

def drop_db():
    Base.metadata.drop_all(ENGINE)

def session():
    cls = sessionmaker(bind=ENGINE)
    return cls()
#drop_db()
init_db()
时间: 2024-08-02 17:14:37

在MacOS下使用sqlalchemy 连接sqlserver2012 数据库的相关文章

python下用mysqldb连接使用数据库

第一步:连接 import MySQLdb #首先需要引入mysqldb即Python 连接 MySQL 的模块. conn=MySQLdb.connect(host="localhost",user="root",passwd="")#此处等价于缺省值时即conn=MySQLdb.connect() cur = conn.cursor() #创建游标,用于发送sql指令 这样就可以用游标cur发送sql指令给mysql了. 第二步:操作 1.创

MySQL学习笔记_12_Linux下C++/C连接MySQL数据库(二) --返回数据的SQL

 Linux下C++/C连接MySQL数据库(二) --返回数据的SQL 引: 返回数据的SQL是指通过查询语句从数据库中取出满足条件的数据记录 从MySQL数据库值哦功能检索数据有4个步骤: 1)发出查询 2)检索数据 3)处理数据 4)整理所需要的数据 用mysql_query()发出查询,检索数据可以使用mysql_store_result()或mysql_use_result(),取决与怎样检索数据,接着是调用mysql_fetch_row()来处理数据,最后,还必须调用mysql_

MySQL学习笔记_13_Linux下C++/C连接MySQL数据库(三) --处理返回数据

 Linux下C++/C连接MySQL数据库(三) --处理返回数据 一.通过返回结果集中的字段数 [cpp] view plaincopyprint? unsigned int mysql_field_count(MYSQL * connection); //将MYSQL_ROW的值作为一个存储了一行数据的数组... unsigned int mysql_field_count(MYSQL * connection); //将MYSQL_ROW的值作为一个存储了一行数据的数组... 示例:

MySQL学习笔记_11_Linux下C++/C连接MySQL数据库(一)

 Linux 下 C++/C 连接 MySQL 数据库(一) 一.连接前准备 原材料:Ubuntu12.04LTS (已经安装了MySQL5.5或者更高级版本,新立得软件包,gcc/g++或者CodeBlosks编译器) 安装了以上的软件包后,我们可以正常使用MySQL完成数据管理工作,但是很多时候我们需要通过编写程序访问MySQL.此时,在程序中需要加载MySQL驱动头文件,但是默认这些驱动包是没有安装的,因此我们需要在新立得中找到"libmysqld-dev"包并安装. 安装完

局域网内任何一台pc上windows下eclipse远程连接hbase数据库

通过很长一段时间的反复失败,终于在windows下实现远程连接hbase数据库,在不断的尝试过程中深感一个详细的文档的重要性,于是就把我配置的详细过程记录下来.文中如果有些地方用词不当,或者理解错误,欢迎您们评论. 一.运行平台 hbase服务器端:Ubuntu 14.04 64位:HBASE1.1.3:JAVA 1.8: hbase客服端:windows32/64位:JAVA1.8:eclipse 4.5: 二.linux服务器端环境配置 1.  安装java 1.8软件 1)下载java软件

Python中使用SQLAlchemy连接Mysql数据库(单表操作)

一,SQLAlchemy的安装 使用 $ easy_install sqlalchemy 或 $ pip install sqlalchemy 如果出现什么错,就进去root用户下进行安装试试,或者网上查查 >>> import sqlalchemy >>> 这样说明成功了,切记是小写哦 二,使用 理论我也不懂,自己查查资料,现在用一个小的案例说一下使用步骤 1,在进行数据操作之前要先连上数据库. >>> from sqlalchemy import

Win7下Node.js连接oracle数据库

最近一个项目需要使用Nodejs连接oracle数据库,在网上查了很久,按照网上的做法一直都无法成功,报错信息是node-gyp rebuild相关的,最后经过不断试验,发现手动编译后可以成功. 首先需要安装node-oracle需要的依赖,包括python2.7(选择将其加入环境变量), oracle的instantclient_12_1的basic和sdk,VS2012,nodejs,因为我连的是远程oracle,所以没有装oracle. 安装完后需要设置系统变量OCI_INCLUDE_DI

CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

用qt连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然. 用ldd命令分析一下,libmysqlclient_r.so.16 => not found ,后明显libmysqlclient_r.so.16 缺少另一个共享库,他们是依赖关系,解决了这个问题qt才能真的连接到mysql数据库.而我的/usr/lib64/下的共享库版本比较高是libmysqlclient.so.18,想到了一个比较投机的想法ln创

在flask中使用SQLAlchemy连接sqllite数据库

设置数据库路径非常重要: 方法: 1 配置数据库 basedir= os.path.abspath(os.path.dirname(__file__)) #获取当前文件的绝对路径 app = Flask(__name__) # 拼接数据库的URL路径 # os.path.join 把basedir和data.sqlite的路径拼接起来# # data.sqlite为数据库文件,若该文件夹下没有这个文件会自动创建 app.config['SQLALCHEMY_DATABASE_URI'] = 's