Separate Type Contructors for (var)char and n(var)char
メンテナーはふだん 2 日以内に返信
@gargsaumya がすでに取り組んでいます。
2025年8月15日 から。
評価
この issue はまだ評価されていません。
説明
Is your feature request related to a problem? Please describe.
Python strings don't have 2 distinct data types like SQL Server (which has (var)char and n(var)char); you define a string with single quotes (') or double quote (") and they have the same inferred data type. This poses a problem with SQL Server parameters as the "safer" option is to assume the string is an nvarchar, however, this causes problems with SARGability as if the column the parameter is compared to is varchar, at the column must be implicitly converted and thus can result in (significant) performance issues due to indexes not being about to be used for seek operations.
For those using UTF-8 collations, this could be even more of a "gotcha", as UTF-8 and UTF-16 will support the same characters (unlike Windows-1252, for example, which only supports 1 byte characters), but varchar values would be UTF-8 while nvarchar UTF-16. Many users are likely writing their Python files in UTF-8 so the strings they see are also UTF-8; if they are using a UTF-8 collated database then one would assume they would want varchar parameters, not nvarchar, as it's unlikely they would be using any nvarchar columns.
Describe the solution you'd like
Provide type objects and constructors for both varchar and nvarchar datatypes. This might copy types found else where, such as the String and WString ("Wide String") objects/constructors.
Describe alternatives you've considered
The alternative is that developers would need to be explicit and CAST/CONVERT the value to a varchar in the appropriate clause(s); i.e. MyColumn = CONVERT(varchar(30), ?). Otherwise they could assign the parameter to a variable first: DECLARE @MyColumn varchar(30) = ?;. This, however, might look odd if the query has to be ported to a different language that doesn't use inferred data types, and is likely to be less obvious to do to the "inexperience" developer.
- 主要言語
- Python
- スター
- 478
- フォーク
- 62
- 平均マージ
- 3日 1時間
- マージ済み PR(30日)
- 26
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/mssql-python のほかの issue
-
area: bulk-copy triage needed
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
microsoft/mssql-python#843 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
triage needed
難易度 4/5 3〜5日 初心者へのやさしさ 22/100
microsoft/mssql-python#849 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
triage needed
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
microsoft/mssql-python#848 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
triage needed
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
microsoft/mssql-python#846 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
macOS: encrypted connections fail after Homebrew moved the `openssl` alias to `openssl@4`対応中かも @bewithgaurav が 16 日前に担当しました。 オープンarea: packaging-platform bug triage needed
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
microsoft/mssql-python#826 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
microsoft/mssql-python の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
noontide-co/mainbranch#1211 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[1.x Bug] run-operation --sql reports success but rolls back writes on transaction-capable adaptersオープンtriage
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
dbt-labs/dbt#16784 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
bug settings ui
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
DewaldOosthuizen/py-tray-command-launcher#162 ·
メンテナーはふだん 1 日以内に返信
-
run_all sleeps after the final job despite documenting delays between jobs対応中かも @Gambit-Checkmate が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100