python操作数据库sqlserver_python操作数据库-SQLSERVER-pyodbc

刚开始学python时,大家都习惯用pymssql去读写SQLSERVER。但是实际使用过程中,pymssql的读写性能以及可靠性的确不如pyodbc来的好。

第一步、为pyodbc Python开发配置开发环境。

window根据需要 安装

linux以centos为例

sudo su#Download appropriate packageforthe OS version

#Choose only ONE of the following, corresponding to your OS version

#RedHat Enterprise Server6curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RedHat Enterprise Server7curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RedHat Enterprise Server8 and Oracle Linux 8curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo

exitsudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflictssudo ACCEPT_EULA=Y yum installmsodbcsql17

# optional:forbcp and sqlcmdsudo ACCEPT_EULA=Y yum install mssql-toolsecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profileecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

source~/.bashrc

# optional:forunixODBC development headerssudo yum install unixODBC-devel

完成odbc驱动的安装后,依赖环境就已经完成了

第二步、安装pyodbc

这个只要pip安装下就好了。

pip install pyodbc

第三步、如何使用pyodbc进行t-sql操作

1)简单查询

import pyodbc

# Some other example server values are

# server= 'localhost\sqlexpress'# 实列名称

# server= 'myserver,port'# 如果实例是有特殊端口号的,默认1433

server= 'tcp:myserver.database.windows.net'database= 'mydb'username= 'myusername'password= 'mypassword'cnxn= pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)

cursor=cnxn.cursor()

cursor.execute("SELECT @@version;")

# 第一种

# rows = cursor.fetchall()

# for row in rows:

#     print(row)

# 第二种

# for row in cursor:

#     print(row)

# # 第三种

# row=cursor.fetchone()

# while row:

#     print(row)

#     row=cursor.fetchone()

2)执行操作

cursor.execute("""INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate)

VALUES (?,?,?,?,?)""",'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP)

cnxn.commit()

row=cursor.fetchone()whilerow:print('Inserted Product key is' +str(row[0]))

row= cursor.fetchone()

3)如何使用window验证

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Trusted_Connection=yes)

第四步、利用c_mssql库

c_mssql库是一个对pyodbc的封装、刚开始是用pymssql进行SQLSERVER进行操作。

但是最近使用SSHTunnel 用跳板机进行SQLSERVER的连接时,线程的问题太严重,看了看官方文档微软现在都主推pyodbc了,那么我们也用pyodbc重新封装下吧。

可以快速读取数据库的数据

from c_mssql importDB_Configfrom c_mssql.mssql_source importMssql_Source#配置一下需要读取的数据库

item_db_config=DB_Config(server='127.0.0.1',user="item_db",password="password",database="item_db",port=1433)

item_db=Mssql_Source(item_db_config)#读取单值

print(item_db.get_value("SELECT GETDATE()"))#读取单行

print(item_db.get_rowdict("SELECT top 1 * from item"))#读取datalist

print(item_db.get_datalist("SELECT * from item"))

利用拼接sql语句快速插入,不需要写sql语句,直接将datalist导入数据表中

from c_mssql importDB_Configfrom c_mssql.mssql_source importMssql_Sourcefrom c_mssql.mssql_dst importMssql_Dst

item_db_config=DB_Config(server='127.0.0.1',user="item_db",password="!QAZwsx",database="item_db",port=1433)

item_db=Mssql_Source(item_db_config)

item_dst=Mssql_Dst(item_db)#source_data需要插入的数据#dst_table 需要插入的表#dst_title 需要插入的列 ,支持list和dict,也可以默认为None。 dict 是{"column":"类型"}#类型 ["string","binary","date","time","datetime","int","float","numeric","UUID","expression"]#source_title 是source的列。#batch是一批导入多少行

item_dst.import_into_dst(source_data=[{"a":"aa","b":1}],dst_table="table_name",dst_title=None,source_title=None,batch=1000)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值