首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Python连接/查询始终加密的Azure SQL?

如何从Python连接/查询始终加密的Azure SQL?
EN

Stack Overflow用户
提问于 2018-04-16 17:13:03
回答 2查看 1.1K关注 0票数 1

我的azure数据库中有一个表,其中包含2列,一个是id,另一个是value,这是一个加密列。现在,我想从Python中连接、写入和读取表。在普通表的情况下,以下是从Python连接的方法,它是有效的:

代码语言:javascript
复制
import pyodbc
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)

但是因为它是一个包含加密列的表,所以我无法通过连接上面的命令来对其进行读写。我认为我需要在连接时通过Trusted_connection=yes; ColumnEncryption=Enabled,但我无法这样做。同样感谢您的帮助。提前谢谢你!

编辑1:当我查询加密列时,它会给出加密值。如何解密并获得原始值?另外,我如何插入加密值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-17 21:22:52

事实证明这是可能的!

代码语言:javascript
复制
import pyodbc
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password';ColumnEncryption=Enabled;KeyStoreAuthentication=KeyVaultClientSecret;KeyStorePrincipalId='+client_id+';KeyStoreSecret='+client_secret)
c = cnxn.cursor()
sql = "select * from MyTable"
c.execute(sql)
print(c.fetchall())

要插入:

代码语言:javascript
复制
sql = "insert into MyTable (id, number) values (?, ?)"
values = [1, 10]
c = cnxn.cursor()
c.execute(sql, values)
c.commit()
票数 3
EN

Stack Overflow用户

发布于 2018-04-16 20:01:15

由于加密和解密是在客户端完成的,因此需要.NET Framework4.6或更高版本。Always Encrypted的版本1仅支持SQL Server客户端驱动程序,但不支持ODBC和JDBC驱动程序。就像here所显示的那样,即使对于pyodbc,似乎也没有什么变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49853604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档