如何 connecct/query Azure SQL 始终从 Python 加密?
How to connecct/query Azure SQL Always encrypted from Python?
我的 azure 数据库中有一个 table,有 2 个列,一个是 id
,另一个是 value
,这是一个加密列。现在我想连接、写入、读取 Python 中的 table。如果是正常的 table,以下是从 Python 连接的方式,并且有效:
import pyodbc
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
但由于它是一个带有加密列的 table,我无法通过上述命令连接到它 write/read。我相信我需要在连接时通过 Trusted_connection=yes; ColumnEncryption=Enabled
,但我无法这样做。对此表示赞赏的帮助。提前致谢!
编辑 1:
当我查询加密列时,它会给我加密值。我如何解密它并获得原始值?
还有我如何插入加密值?
由于加解密在客户端完成,需要.NET framework 4.6以上版本。 Always Encrypted 版本 1 仅支持 SQL 服务器客户端驱动程序,但不支持 ODBC 和 JDBC 驱动程序。如图 here.
所示,即使对于 pyodbc,似乎也没有任何改变
原来是可以的!
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())
要插入:
sql = "insert into MyTable (id, number) values (?, ?)"
values = [1, 10]
c = cnxn.cursor()
c.execute(sql, values)
c.commit()
我的 azure 数据库中有一个 table,有 2 个列,一个是 id
,另一个是 value
,这是一个加密列。现在我想连接、写入、读取 Python 中的 table。如果是正常的 table,以下是从 Python 连接的方式,并且有效:
import pyodbc
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
但由于它是一个带有加密列的 table,我无法通过上述命令连接到它 write/read。我相信我需要在连接时通过 Trusted_connection=yes; ColumnEncryption=Enabled
,但我无法这样做。对此表示赞赏的帮助。提前致谢!
编辑 1: 当我查询加密列时,它会给我加密值。我如何解密它并获得原始值? 还有我如何插入加密值?
由于加解密在客户端完成,需要.NET framework 4.6以上版本。 Always Encrypted 版本 1 仅支持 SQL 服务器客户端驱动程序,但不支持 ODBC 和 JDBC 驱动程序。如图 here.
所示,即使对于 pyodbc,似乎也没有任何改变原来是可以的!
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())
要插入:
sql = "insert into MyTable (id, number) values (?, ?)"
values = [1, 10]
c = cnxn.cursor()
c.execute(sql, values)
c.commit()