Launchbadge/sqlx

ساخت وبلاگ

این تعهد متعلق به هیچ شعبه ای در این مخزن نیست و ممکن است متعلق به یک چنگال در خارج از مخزن باشد.

نام در حال استفاده

یک برچسب در حال حاضر با نام شاخه ارائه شده وجود دارد. بسیاری از دستورات GIT نام برچسب و شاخه را می پذیرند ، بنابراین ایجاد این شاخه ممکن است باعث رفتار غیر منتظره شود. آیا مطمئن هستید که می خواهید این شاخه را ایجاد کنید؟

  • محلی
  • مکاشه

با استفاده از URL وب از Git یا Checkout با SVN استفاده کنید.

با CLI رسمی ما سریع کار کنید. بیشتر بدانید.

ورود به سیستم لازم

لطفاً برای استفاده از برنامه های کد وارد سیستم شوید.

راه اندازی دسک تاپ GitHub

اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.

راه اندازی دسک تاپ GitHub

اگر هیچ اتفاقی نمی افتد ، GitHub Desktop را بارگیری کنید و دوباره امتحان کنید.

راه اندازی Xcode

اگر هیچ اتفاقی نمی افتد ، Xcode را بارگیری کنید و دوباره امتحان کنید.

راه اندازی کد ویژوال استودیو

فضای کد شما یک بار آماده خواهد شد.

مشکلی برای تهیه فضای کدگذاری شما وجود داشت ، لطفاً دوباره امتحان کنید.

آخرین تعهد

آمار git

فایل ها

بارگیری آخرین اطلاعات متعهد انجام نشد.

readme. md

سوالی دارید؟حتماً سؤالات متداول را ابتدا بررسی کنید!

SQLX یک زنگ زدگی و خالص استSQL Crate با نمایش داده های بررسی شده در زمان کامپایل بدون DSL.

واقعاً ناهمزمانساخته شده از زمین با استفاده از Async/منتظر حداکثر همزمانی.

کامپایل زمان نمایش داده شد (در صورت تمایل). ببینید SQLX ORM نیست.

پایگاه داده Agnostic. پشتیبانی از PostgreSQL ، MySQL ، SQLITE و MSSQL.

زنگ زدگی خالصدرایورهای Postgres و MySQL/Mariadb با استفاده از صفر ناامن به زنگ زدگی خالص نوشته شده اند††کد

زمان اجرا آگنوستیک. در زمان های مختلف (ASYNC-STD / TOKIO / ACTIX) و Backends TLS (بومی TL ، زنگ زدگی) کار می کند.

† درایور SQLite از کتابخانه libsqlite3 c استفاده می کند زیرا SQLITE یک پایگاه داده تعبیه شده است (تنها راهی که ما می توانیم برای SQLite زنگ خالص باشیم ، انتقال همه SQLite به زنگ زدگی است).

†† SQLX از #! [ممنوع (UNSAFE_CODE)] استفاده می کند ، مگر اینکه ویژگی SQLITE فعال باشد. از آنجا که راننده SQLite با C در تعامل است ، این تعامل ناامن است.

کراس پلتفرمSQLX با زنگ زدگی بومی ، در هر جایی که زنگ زدگی پشتیبانی می شود پشتیبانی می شود.

اتصال داخلی با SQLX :: استخر.

جریان ردیف. داده ها به صورت ناهمزمان از پایگاه داده خوانده می شوند و در صورت تقاضا رمزگشایی می شوند.

تهیه بیانیه خودکار و ذخیره سازی. هنگام استفاده از API پرس و جو سطح بالا (SQLX :: پرس و جو) ، اظهارات تهیه شده و در هر اتصال ذخیره می شود.

اجرای پرس و جو ساده (آماده) از جمله واکشی نتایج به همان ردیف های مورد استفاده توسط API سطح بالا. از اجرای دسته ای و بازگشت نتایج حاصل از همه بیانیه ها پشتیبانی می کند.

امنیت لایه حمل و نقل (TLS) که در آن پشتیبانی می شود (mysql و postgresql).

اعلان های ناهمزمان با استفاده از گوش دادن و اطلاع رسانی برای postgresql.

معاملات تو در تو با پشتیبانی از صرفه جویی در امتیاز.

هر درایور پایگاه داده برای تغییر درایور پایگاه داده در زمان اجرا. Anypool به درایور مشخص شده توسط طرح URL متصل می شود.

SQLX با Async-Std ، Tokio و Actix Runtimes سازگار است. و ، Baine-TLS و Rustls TLS Backends. هنگام افزودن وابستگی ، باید یک ویژگی زمان اجرا را انتخاب کنید که زمان اجرا + TLS باشد.

Runtime و TLS Backend که مجموعه ویژگی های جداگانه ای برای انتخاب نیست ، راه حل مسئله ای برای یک بار است.

پرچم های ویژگی باربری

Runtime-Async-STD-Native-TLS: از Backtime ASYNC-STD Runtime و Native-TLS TLS استفاده کنید.

Runtime-Async-STD-Rustls: از Backend Runtime ASYNC-STD و Rustls TLS استفاده کنید.

Runtime-Tokio-Native-TLS: از پس زمینه TOKIO Runtime و Native-TLS TLS استفاده کنید.

Runtime-Tokio-Rustls: از Tokio Runtime و Rustls TLS Backend استفاده کنید.

Runtime-Actix-Native-TLS: از Backend Time Actix Runtime و Native-TLS TLS استفاده کنید.

Runtime-Actix-Rustls: از Backend Runtime و Rustls TLS استفاده کنید.

Postgres: پشتیبانی از سرور پایگاه داده Postgres را اضافه کنید.

MySQL: پشتیبانی از سرور پایگاه داده MySQL/MARIADB را اضافه کنید.

MSSQL: پشتیبانی از سرور پایگاه داده MSSQL را اضافه کنید.

SQLITE: پشتیبانی از موتور پایگاه داده SQLite خود را اضافه کنید.

هر یک: پشتیبانی از هر درایور پایگاه داده ، که می تواند در زمان اجرا به درایور پایگاه داده پروکسی کند ، اضافه کنید.

ماکرو: پشتیبانی از پرس و جو*را اضافه کنید! ماکرو ، که اجازه می دهد نمایش داده های بررسی شده زمان کامپایل.

مهاجرت: پشتیبانی از مدیریت مهاجرت را اضافه کنید و مهاجرت کنید! ماکرو ، که امکان مهاجرت های تعبیه شده در زمان کامپایل را فراهم می کند.

UUID: پشتیبانی از UUID (در Postgres) را اضافه کنید.

Chrono: پشتیبانی از انواع تاریخ و زمان را از Chrono اضافه کنید.

زمان: پشتیبانی از انواع تاریخ و زمان را از زمان جعبه زمان اضافه کنید (جایگزین Chrono ، که توسط پرس و جو ترجیح داده می شود! ماکرو ، اگر هر دو فعال باشند)

BSTR: پشتیبانی از BSTR :: BSTRING را اضافه کنید.

GIT2: پشتیبانی از Git2 :: OID را اضافه کنید.

BigDecimal: با استفاده از جعبه BigDecimal ، پشتیبانی از عددی را اضافه کنید.

اعشاری: با استفاده از جعبه Rust_Decimal ، پشتیبانی از عددی را اضافه کنید.

ipnetwork: با استفاده از جعبه ipnetwork ، پشتیبانی از INET و CIDR (در Postgres) را اضافه کنید.

JSON: با استفاده از جعبه serde_json ، پشتیبانی از JSON و JSONB (در Postgres) را اضافه کنید.

TLS: پشتیبانی از اتصالات TLS را اضافه کنید.

آفلاین: هنگامی که یک پایگاه داده زنده در دسترس نیست (مانند CI) ، ساخت ماکروها را در حالت آفلاین امکان پذیر می کند.

  • برای استفاده از SQLX-CLI نصب شده است. به SQLX-CLI/README. MD مراجعه کنید.

SQLX ORM نیست!

SQLx از پرس و جوهای بررسی شده در زمان کامپایل پشتیبانی می کند. با این حال، این کار را با ارائه Rust API یا DSL (زبان اختصاصی دامنه) برای ساخت پرس و جو انجام نمی دهد. در عوض، ماکروهایی را ارائه می دهد که SQL معمولی را به عنوان ورودی می گیرند و از معتبر بودن آن برای پایگاه داده شما اطمینان می دهند. روش کار این است که SQLx در زمان کامپایل به DB توسعه شما متصل می شود تا خود پایگاه داده درخواست های SQL شما را تأیید کند (و اطلاعاتی را در مورد آن بازگرداند). این پیامدهای بالقوه شگفت انگیزی دارد:

  • از آنجایی که SQLx هرگز مجبور نیست خود رشته SQL را تجزیه کند، هر نحوی که DB توسعه می پذیرد می تواند مورد استفاده قرار گیرد (از جمله موارد اضافه شده توسط پسوند پایگاه داده)
  • با توجه به حجم متفاوتی از پایگاه های اطلاعاتی که به شما امکان بازیابی پرس و جوها را می دهند، میزان تأیید SQL که از ماکروهای پرس و جو دریافت می کنید به پایگاه داده بستگی دارد.

اگر به دنبال یک ORM (ناهمزمان) هستید، می توانید ormx یا SeaORM را که بر روی SQLx ساخته شده است، بررسی کنید.

برای استفاده عمیق تر، نمونه ها/ پوشه را ببینید.

یک اتصال واحد را می توان با استفاده از هر یک از انواع اتصال پایگاه داده و فراخوانی connect() ایجاد کرد.

به طور کلی، شما می خواهید در عوض یک اتصال Pool (sqlx::Pool) ایجاد کنید تا برنامه شما تنظیم کند که چه تعداد از اتصالات سمت سرور استفاده می کند.

در SQL، پرس و جوها را می توان به آماده (پارامتری) یا آماده (ساده) تفکیک کرد. پرس و جوهای آماده شده دارای طرح پرس و جو خود در حافظه پنهان هستند، از یک حالت باینری ارتباط (پهنای باند کمتر و رمزگشایی سریعتر) استفاده می کنند و از پارامترها برای جلوگیری از تزریق SQL استفاده می کنند. پرس و جوهای آماده نشده ساده هستند و فقط برای موارد استفاده در نظر گرفته شده اند که در آن دستور آماده شده کار نمی کند، مانند دستورات مختلف پایگاه داده (به عنوان مثال، PRAGMA یا SET یا BEGIN).

SQLx از تمام عملیات با هر دو نوع پرس و جو پشتیبانی می کند. در SQLx، یک & str به عنوان یک پرس و جو آماده نشده و یک ساختار Query یا QueryAs به عنوان یک جستجوی آماده در نظر گرفته می شود.

ما باید ترجیح دهیم تا حد امکان از رابط پرس و جوی سطح بالا استفاده کنیم. برای سهولت در این کار، نهایی کننده هایی روی نوع وجود دارد تا نیازی به پیچیدن با مجری نباشد.

نهایی کننده پرس و جوی اجرا، تعداد ردیف های آسیب دیده را در صورت وجود برمی گرداند و همه نتایج دریافتی را حذف می کند. علاوه بر این، fetch، fetch_one، fetch_optional و fetch_all برای دریافت نتایج وجود دارد.

نوع Query که از sqlx::query برگردانده شده است، Row را از پایگاه داده برمی گرداند. مقادیر ستون ها را می توان با ترتیب یا نام با row. get() مشاهده کرد. از آنجایی که Row یک وام غیرقابل تغییر را در اتصال حفظ می کند، ممکن است در هر زمان فقط یک ردیف وجود داشته باشد.

فینال Query Fetch یک نوع جریان مانند را برمی گرداند که از طریق ردیف ها در مجموعه های نتیجه تکرار می شود.

برای کمک به نقشه برداری از ردیف به نوع دامنه ، دو اصطلاح وجود دارد که ممکن است مورد استفاده قرار گیرد:

به جای یک جریان از نتایج ، می توانیم از fetch_one یا fetch_optional استفاده کنیم تا یک نتیجه مورد نیاز یا اختیاری را از پایگاه داده درخواست کنیم.

ما می توانیم از ماکرو ، sqlx :: پرس و جو استفاده کنیم! برای دستیابی به تأیید نحوی و معنایی زمان کامپایل SQL ، با خروجی به یک نوع ضبط ناشناس که در آن هر ستون SQL یک زمینه زنگ زدگی است (با استفاده از شناسه های خام در صورت لزوم).

تفاوت از پرس و جو ():

پارامترهای ورودی (یا اتصال) باید به یکباره داده شود (و آنها زمان کامپایل معتبر هستند تا شماره مناسب و نوع مناسب باشند).

نوع خروجی یک رکورد ناشناس است. در مثال بالا نوع مشابه:

متغیر محیط Database_URL باید در زمان ساخت به یک پایگاه داده تنظیم شود که بتواند نمایش داده ها را در برابر آن تهیه کند. این بانک اطلاعاتی نیازی به داده های حاوی داده ای ندارد اما باید به همان نوع (MySQL ، Postgres و غیره) باشد و همان طرح پایگاه داده ای را که در زمان اجرا به آن وصل خواهید شد ، دارند.

برای راحتی ، می توانید از پرونده . env 1 برای تنظیم پایگاه داده_url استفاده کنید تا مجبور نباشید هر بار آن را منتقل کنید:

بزرگترین نکته منفی برای پرس و جو! () این است که نوع خروجی را نمی توان نامگذاری کرد (به دلیل زنگ زدگی که به طور رسمی از سوابق ناشناس پشتیبانی نمی کند). برای پرداختن به آن ، یک کلان query_as وجود دارد! () ماکرو که بیشتر یکسان است به جز اینکه می توانید نوع خروجی را نامگذاری کنید.

برای جلوگیری از نیاز به داشتن یک پایگاه داده توسعه در اطراف برای تدوین پروژه ، حتی اگر هیچ تغییری (به قسمتهای دسترسی به پایگاه داده-کد کد) انجام نشده باشد ، می توانید "حالت آفلاین" را فعال کنید تا نتایج حاصل از تجزیه و تحلیل پرس و جو SQL را ذخیره کنید. ابزار خط فرمان SQLX. به SQLX-CLI/README. MD مراجعه کنید.

کامپایل زمان نمایش داده های تأیید شده در زمان کامپایل کار کاملی انجام می دهند. اقدامات افزایشی مانند بررسی بار و ساخت محموله می تواند با استفاده از ساخت بهینه شده با قرار دادن موارد زیر در محموله خود ، سریعتر باشد. (اطلاعات بیشتر در بخش پروفایل کتاب بار)

1 جعبه Dotenv از دسامبر سال 2021 به خودی خود رها شده است ، بنابراین ما به جای آن از جعبه dotenvy استفاده می کنیم. قالب پرونده یکسان است.

این جعبه از #! [ممنوع (UNSAFE_CODE)] برای اطمینان از اجرای همه چیز در 100 ٪ زنگ خطر استفاده می کند.

اگر ویژگی SQLITE فعال باشد ، این به #! [Deny (ansafe_code)] با #! [اجازه می دهد (UNSAFE_CODE)] در ماژول SQLX :: SQLITE کاهش می یابد. چندین مکان وجود دارد که ما با API C SQLITE در تعامل هستیم. ما سعی می کنیم هر فراخوانی را برای متغیرهایی که فرض می کنیم مستند کنیم. ما کاملاً از حسابرسی و بازخورد استفاده از کد ناامن ما استقبال می کنیم.

مجوز تحت هر یک از

  • مجوز Apache ، نسخه 2. 0 (مجوز-اپاش یا http://www. apache.org/licenses/license-2. 0)
  • مجوز MIT (مجوز-mit یا http://opensource.org/licenses/mit)

مگر در مواردی که صریحاً بیان کنید ، هرگونه مشارکت عمداً برای ورود به کار توسط شما ، همانطور که در مجوز Apache-2. 0 تعریف شده است ، مانند بالا ، بدون هیچگونه شرایط و ضوابط اضافی ، دارای مجوز دوگانه است.

در باره

tokit ابزار Rust SQL. یک جعبه Async ، Pure Rust SQL که شامل نمایش داده های بررسی شده در زمان کامپایل بدون DSL است. از PostgresQL ، MySQL ، SQLITE و MSSQL پشتیبانی می کند.< SPAN> اگر ویژگی SQLite فعال باشد ، این به #! [Deny (ansafe_code)] با #! چندین مکان وجود دارد که ما با API C SQLITE در تعامل هستیم. ما سعی می کنیم هر فراخوانی را برای متغیرهایی که فرض می کنیم مستند کنیم. ما کاملاً از حسابرسی و بازخورد استفاده از کد ناامن ما استقبال می کنیم.

نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 52 تاريخ : چهارشنبه 23 فروردين 1402 ساعت: 11:01