<h2>pytds公司</h2>
<p><em>使用纯Python TDS(表格数据流)协议实现的MSSQL的Python DBAPI驱动程序</em></p>
<p>我使用<a href="https://github.com/denisenkom/pytds" rel="nofollow noreferrer">pytds</a>作为<a href="https://en.wikipedia.org/wiki/Merge_(SQL)" rel="nofollow noreferrer">merge / upsert</a>,通过一个以SQL服务器为目标的<a href="https://en.wikipedia.org/wiki/Stored_procedure" rel="nofollow noreferrer">stored procedure</a>。在</p>
<h3>示例</h3>
<p>以下是基本函数的示例,行数据由元组表示:</p>
<pre><code>def get_connection(instance: str, database: str, user: str, password: str):
return pytds.connect(
dsn=instance, database=database, user=user, password=password, autocommit=True
)
def execute_with_tvp(connection: pytds.Connection, procedure_name: str, rows: list):
with connection.cursor() as cursor:
tvp = pytds.TableValuedParam(type_name=my_type, rows=rows)
cursor.callproc(procedure_name, tvp)
</code></pre>
<h3>仅供参考</h3>
<p>对于我的最后一个解决方案,我离开了python并实现了一个c程序,因为python的性能对于一个体面的<a href="https://en.wikipedia.org/wiki/Extract,_transform,_load" rel="nofollow noreferrer">ETL</a>来说是很低的,而且pytds不支持使用非标准端口连接到命名实例</strong>。<a href="https://github.com/denisenkom/pytds/issues/107" rel="nofollow noreferrer">Checkout the issue I created for updates.</a></p>