在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:tiger@mydsn')
pymssql
engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
因此要想使用sqlalchemy 先要配置pyodbc正常使用当然要是比较省事儿的话可以选择安装pymssql
方法一、安装pymssql
pip3 install pymssql
安装pymssql 需要提前安装依赖
brew install freetds@0.91 brew link freetds@0.91
数据库链接字符串为
方法二、 安装 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:123456@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()
在MacOS下使用sqlalchemy 连接sqlserver2012 数据库的更多相关文章
- python使用sqlalchemy连接pymysql数据库
python使用sqlalchemy连接mysql数据库 字数833 阅读461 评论0 喜欢1 sqlalchemy是python当中比较出名的orm程序. 什么是orm? orm英文全称objec ...
- python使用sqlalchemy连接mysql数据库
环境:centos7+python2.7.5+sqlalchemy sqlalchemy是python当中比较出名的orm程序.在python中,使用sqlalchemy连接mysql数据库进行操作非 ...
- Windows下C/C++连接mysql数据库的方法
步骤 安装MySQL数据库 项目属性页->C/C++->常规->附加包含目录:xxx\mysql Server 5.6\include 项目属性页->链接器->常规-&g ...
- .NET平台下使用C#连接各种数据库
在.NET平台下,通常我们需要连接不同的数据库,这就需要我们配置连接字符串以及提供常用的class进行数据存取. 1.C#连接Access @"Provider=Microsoft.ACE. ...
- Delphi 2010下使用sqlitesimpledelphi连接SQLite数据库及中文乱码问题的解决
应女朋友的要求,要写一款销售管理的软件.用于管理服装店每天的销售记录,已及管理服装店的客户,并对客户进行生日提醒 因为之前使用C#写过一款家庭管理软件,主要是自己用,所以使用了服务器型数据库MySQL ...
- CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)
用qt连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然. 用ldd命令分析一下,libmysqlclient_r ...
- VS2010下C/C++连接MySql数据库的方法
1. 新建一个C++控制台程序 2. 选择项目 CMySql属性 3. 选择配置属性 C/C++ 常规 附加包含目录 4. 添加包含目录C:\Program Files\MySQL\Connector ...
- Windows 7下通过Excel2007连接Oracle数据库并对表查询
http://blog.csdn.net/pan_tian/article/details/8133668 1. 环境变量的设置 1.1 ORACLE_HOME环境变量的设置,我这里指向了我的Ora ...
- inux 下c/c++ 连接mysql数据库全过程-----已经通过验证
安装Mysql(还可以下载 .gz包,解压安装,再此只介绍此法,其实都一样了,或百度一下...重点在下下下下面) 1.首先安装Mysql服务器 sudo apt-get install mysql-s ...
随机推荐
- 王某人从0开始学习lorawan的笔记_1:最底层!IO驱动层,Gpio_t类
本来想介绍SX1276(与SX1278的操作完全相同,只是需要处理频段)的,但是这款芯片内容还是很丰富的,三言两语介绍不清,而且资料也很多就算了. 直接正面怼lorawan吧,怼到高地去,打爆lora ...
- XMind使用教程入门
什么是思维导图 借用百度百科的介绍,思维导图又称脑图.心智导图.是一种将思维形象化的方法,它利用图文并重的方法,将各级主题之间的关系用相互隶属与相关的层级图表现出来,将主题关键词与图像.颜色等建立记忆 ...
- asio kcp源码分析
asio kcp代码走读 (1)kcp_client_wrap类 a 提供方法接口如下: send_msg kcp_client_.send_msg(msg); stop //等待工作线程退出 set ...
- codeforces 811 D. Vladik and Favorite Game(bfs水题)
题目链接:http://codeforces.com/contest/811/problem/D 题意:现在给你一个n*m大小的图,你输出一个方向之后,系统反馈给你一个坐标,表示走完这步之后到的位子, ...
- CodeM资格赛 优惠券
[编程|1000分] 优惠券 时间限制:1秒空间限制:32768K 题目描述 美团点评上有很多餐馆优惠券,用户可以在美团点评App上购买.每种优惠券有一个唯一的正整数编号.每个人可以拥有多张优惠券,但 ...
- 模板类型推导、auto推导
effective modern c++ 果然是神书,干货满满,简单记录下. item1 模板推倒 典型的模板函数 temlate<class T> void fn(ParamType p ...
- 【Offer】[16] 【数值的整数次方】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数 ...
- 【Offer】[12] 【矩阵中的路径】
题目描述 思路分析 Java代码 代码链接 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上 ...
- 我的MarkDown入门
目录 0.前言 1.软件准备 2.基本语法 2.1斜体&加粗 2.2分级标题 2.3分割线 2.4超链接 2.5列表 2.6引用 2.7插入代码 2.8插入图像 2.9插入表格 2.10目录 ...
- [中秋]宇宙第一 IDE Visual Studio 了解一下
官网 https://visualstudio.microsoft.com/zh-hans/vs/ 文档 https://docs.microsoft.com/zh-cn/visualstudio/d ...