دیتابیس db
رابط مشترک پایگاههای داده، مهاجرت ساختار و استخر اتصال.
واردسازی دیتابیس
هر موتور پایگاه داده بستهی خودش را دارد: اس کیو لایت، مای اس کیو ال، پستگرس و برای کلید و مقدار ردیس. این بسته رابط اتصال را میدهد که سه موتور SQL پیادهاش میکنند؛ اگر کدتان را با آن بنویسید، عوض کردن موتور فقط یک خط است.
مهاجرتها ساختار پایگاه داده را همراه کد پیش میبرند: هر تغییر یک شماره دارد و مهاجرت به بالا فقط آنهایی را اعمال میکند که هنوز اعمال نشدهاند. مقدارهایی را که کاربر وارد کرده هرگز مستقیم در SQL نچسبانید؛ آنها را با نقل قول یا پارامترهای آمادهسازیشده بفرستید.
گونهها
استخر Pool
ساختار استخر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| conns | conns | وکتور | اتصالها. |
| taken | taken | وکتور<صحیح> | کدام اتصال گرفته شده. |
| limit | limit | صحیح = 0 | بیشترین شمار اتصال. |
واردسازی دیتابیس
واردسازی دیتابیس.اس کیو لایت
روال ریشه:
ناپایا استخر := دیتابیس.استخر جدید(۲)
تکرار ۳:
سرچاپ دیتابیس.افزودن(استخر، اس کیو لایت.اتصال(اس کیو لایت.بازکردن(":memory:")))
پایان
سرچاپ دیتابیس.اندازه(استخر)، دیتابیس.بیکار(استخر)، دیتابیس.در استفاده(استخر)
یک := دیتابیس.گرفتن(استخر)
دو := دیتابیس.گرفتن(استخر)
سه := دیتابیس.گرفتن(استخر)
سرچاپ دیتابیس.اجاره شده(یک)، دیتابیس.اجاره شده(سه)، سه == دیتابیس.بدون اجاره
سرچاپ دیتابیس.بیکار(استخر)، دیتابیس.در استفاده(استخر)
ا := دیتابیس.اتصال اجارهای(استخر، یک)
سرچاپ دیتابیس.پرسمان عدد(ا، "SELECT 6 * 7")
دیتابیس.رهاکردن(استخر، یک)
دیتابیس.رهاکردن(استخر، دو)
سرچاپ دیتابیس.بیکار(استخر)، دیتابیس.حذف مرده ها(استخر)
دیتابیس.بستن همه(استخر)
دیتابیس.آزادکردن(استخر)
پایانردیف ها Rows
میانجی ردیف هابعدی، متن، عدد صحیح، بستن و مانند آن.واردسازی دیتابیس
واردسازی دیتابیس.اس کیو لایت
روال گزارش(ا: dyn دیتابیس.اتصال):
سرچاپ ا.نوع()، ا.معتبر()، ا.پینگ()
_ := ا.اجرا("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, score REAL)")
_ := ا.اجرا("INSERT INTO users (name, score) VALUES (" + ا.نقل قول("O'Brien") + ", 7.5)")
_ := ا.اجرا("INSERT INTO users (name, score) VALUES ('مریم', 9)")
سرچاپ ا.شناسه آخرین درج()، ا.تعداد تغییرات()
ر := ا.پرسمان("SELECT id, name, score FROM users ORDER BY id")
سرچاپ ر.معتبر()، ر.تعداد ستون()، ر.نام ستون(۱)
تا ر.بعدی():
سرچاپ ر.عدد صحیح(۰)، ر.متن(۱)، ر.عدد اعشار(۲)، ر.عدد صحیح۶۴(۰)، ر.خالی است(۲)، ر.نوع ستون(۱)
پایان
_ := ر.بستن()
ت := ا.شروع تراکنش()
سرچاپ ت.معتبر()
_ := ت.اجرا("UPDATE users SET score = 0")
تر := ت.پرسمان("SELECT SUM(score) FROM users")
_ := تر.بعدی()
سرچاپ تر.عدد اعشار(۰)
_ := تر.بستن()
_ := ت.بازگردانی()
ت۲ := ا.شروع تراکنش()
_ := ت۲.اجرا("DELETE FROM users WHERE id = 1")
_ := ت۲.ثبت تراکنش()
سرچاپ دیتابیس.پرسمان عدد(ا، "SELECT COUNT(*) FROM users")، دیتابیس.پرسمان عدد۶۴(ا، "SELECT MAX(id) FROM users")
سرچاپ دیتابیس.پرسمان اعشار(ا، "SELECT score FROM users")، دیتابیس.پرسمان متن(ا، "SELECT name FROM users")
سرچاپ دیتابیس.شمارش ردیف ها(ا، "SELECT * FROM users")
سرچاپ دیتابیس.اجرا کن(ا، "INSERT INTO users (name) VALUES ('علی')")، دیتابیس.اجرا کن(ا، "INSERT INTO nowhere VALUES (1)")
سرچاپ ا.خطا()
ناپایا دستورها := وکتور {} برگردان وکتور<رشته>
دستورها.افزودن("INSERT INTO users (name) VALUES ('سارا')")
دستورها.افزودن("INSERT INTO users (name) VALUES ('رضا')")
سرچاپ دیتابیس.اجرای همه(ا، دستورها)
دستورها.افزودن("INSERT INTO nowhere VALUES (1)")
سرچاپ دیتابیس.در تراکنش(ا، دستورها)، دیتابیس.پرسمان عدد(ا، "SELECT COUNT(*) FROM users")
سرچاپ دیتابیس.نقل قول("it's")
_ := ا.بستن()
پایان
روال ریشه:
گزارش(اس کیو لایت.اتصال(اس کیو لایت.بازکردن(":memory:")))
سرچاپ دیتابیس.اس کیو لایت، دیتابیس.مای اس کیو ال، دیتابیس.پستگرس
سرچاپ دیتابیس.نوع خالی، دیتابیس.نوع صحیح، دیتابیس.نوع اعشاری، دیتابیس.نوع متن، دیتابیس.نوع دودویی
پایانتراکنش Tx
میانجی تراکنشاجرا، پرسمان، ثبت تراکنش و بازگردانی.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
اتصال Connection
میانجی اتصالاتصال هر موتور بگیرید.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
مهاجرت Migration
ساختار مهاجرت| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| version | version | صحیح = 0 | شمارهی نسخه؛ مهاجرتها به ترتیب همین شماره اعمال میشوند. |
| name | name | رشته = "" | نام. |
| up | up | رشته = "" | SQL اعمال؛ چند دستور را با ; جدا کنید. |
| down | down | رشته = "" | SQL برگرداندن. |
واردسازی دیتابیس
واردسازی دیتابیس.اس کیو لایت
روال ریشه:
ا := اس کیو لایت.اتصال(اس کیو لایت.بازکردن(":memory:"))
ناپایا م := دیتابیس.مهاجرت گر جدید()
دیتابیس.افزودن مهاجرت(م، ۱، "users"، "CREATE TABLE users (id INTEGER PRIMARY KEY, email TEXT NOT NULL)"، "DROP TABLE users")
دیتابیس.افزودن مهاجرت(م، ۲، "posts"، "CREATE TABLE posts (id INTEGER PRIMARY KEY, title TEXT); INSERT INTO posts (title) VALUES ('سلام')"، "DROP TABLE posts")
دیتابیس.افزودن مهاجرت(م، ۳، "tags"، "ALTER TABLE posts ADD COLUMN tag TEXT"، "ALTER TABLE posts DROP COLUMN tag")
سرچاپ دیتابیس.تعداد مهاجرت(م)، دیتابیس.نسخه طرحواره(م، ا)، دیتابیس.تعداد در انتظار(م، ا)
سرچاپ دیتابیس.مهاجرت به(م، ا، ۲)
سرچاپ دیتابیس.نسخه طرحواره(م، ا)، دیتابیس.اعمال شده(م، ا، ۲)، دیتابیس.اعمال شده(م، ا، ۳)
سرچاپ دیتابیس.مهاجرت به بالا(م، ا)، دیتابیس.نسخه طرحواره(م، ا)
سرچاپ دیتابیس.مهاجرت به بالا(م، ا)
سرچاپ دیتابیس.بازگردانی(م، ا)، دیتابیس.نسخه طرحواره(م، ا)
سرچاپ دیتابیس.مهاجرت به(م، ا، ۰)، دیتابیس.نسخه طرحواره(م، ا)
سرچاپ دیتابیس.پرسمان عدد(ا، "SELECT COUNT(*) FROM " + دیتابیس.جدول مهاجرت)
دیتابیس.آزادکردن مهاجرت گر(م)
ناپایا م۲ := دیتابیس.مهاجرت گر در("app_versions")
دیتابیس.افزودن مهاجرت(م۲، ۱، "t"، "CREATE TABLE t (x INTEGER)"، "DROP TABLE t")
سرچاپ دیتابیس.ساخت جدول(م۲، ا)، دیتابیس.مهاجرت به بالا(م۲، ا)، م۲.table
دیتابیس.آزادکردن مهاجرت گر(م۲)
تکهها := دیتابیس.جداکردن دستورها("INSERT INTO t VALUES (1); SELECT ';' ; ")
سرچاپ تکهها.طول()، تکهها.دریافت(۱)
پایانمهاجرت گر Migrator
ساختار مهاجرت گر| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| items | items | وکتور<مهاجرت> | مهاجرتها. |
| table | table | رشته = "" | نام جدول نسخهها. |
نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
پایاها و متغیرها
بدون اجاره NO_LEASE
پایا بدون اجاره: صحیح۳۲ = -1گرفتن وقتی اتصال آزادی نیست برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
اس کیو لایت SQLITE
پایا اس کیو لایت: رشته = "sqlite"نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
مای اس کیو ال MYSQL
پایا مای اس کیو ال: رشته = "mysql"نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
پستگرس POSTGRES
پایا پستگرس: رشته = "postgres"نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نوع خالی TYPE_NULL
پایا نوع خالی: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نوع صحیح TYPE_INT
پایا نوع صحیح: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نوع اعشاری TYPE_FLOAT
پایا نوع اعشاری: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نوع متن TYPE_TEXT
پایا نوع متن: صحیح۳۲ = 3نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نوع دودویی TYPE_BLOB
پایا نوع دودویی: صحیح۳۲ = 4نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
جدول مهاجرت MIGRATION_TABLE
پایا جدول مهاجرت: رشته = "schema_migrations"نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
روالها
استخر جدید NewPool
روال استخر جدید(limit: صحیح): استخرنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
افزودن Add
روال افزودن(p &: استخر، c: dyn اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
گرفتن Acquire
روال گرفتن(p &: استخر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
اجاره شده Leased
روال اجاره شده(lease: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
اتصال اجارهای Conn
روال اتصال اجارهای(p: استخر، lease: صحیح): dyn اتصالنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
رهاکردن Release
روال رهاکردن(p &: استخر، lease: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
اندازه Size
روال اندازه(p: استخر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
بیکار Idle
روال بیکار(p: استخر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
در استفاده InUse
روال در استفاده(p: استخر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
حذف مرده ها DropDead
روال حذف مرده ها(p &: استخر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
بستن همه CloseAll
روال بستن همه(p &: استخر)نمونهی این مورد همراه با موارد بالاتر آمده است: db-Pool.salam
آزادکردن Free
روال آزادکردن(p &: استخر)نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
پرسمان عدد QueryInt
روال پرسمان عدد(c: dyn اتصال، sql: رشته): صحیحCOUNT و مانند آن.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
پرسمان عدد۶۴ QueryInt64
روال پرسمان عدد۶۴(c: dyn اتصال، sql: رشته): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
پرسمان اعشار QueryFloat
روال پرسمان اعشار(c: dyn اتصال، sql: رشته): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
پرسمان متن QueryText
روال پرسمان متن(c: dyn اتصال، sql: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
شمارش ردیف ها CountRows
روال شمارش ردیف ها(c: dyn اتصال، sql: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
اجرا کن Run
روال اجرا کن(c: dyn اتصال، sql: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
اجرای همه RunAll
روال اجرای همه(c: dyn اتصال، stmts: وکتور<رشته>): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
در تراکنش InTx
روال در تراکنش(c: dyn اتصال، stmts: وکتور<رشته>): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
نقل قول QuoteLiteral
روال نقل قول(s: رشته): رشته' برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
مهاجرت گر جدید NewMigrator
روال مهاجرت گر جدید(): مهاجرت گرنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
مهاجرت گر در NewMigratorIn
روال مهاجرت گر در(table: رشته): مهاجرت گرنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
آزادکردن مهاجرت گر FreeMigrator
روال آزادکردن مهاجرت گر(m &: مهاجرت گر)نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
افزودن مهاجرت AddMigration
روال افزودن مهاجرت(m &: مهاجرت گر، version: صحیح، name: رشته، up: رشته، down: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
تعداد مهاجرت MigrationCount
روال تعداد مهاجرت(m: مهاجرت گر): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
جداکردن دستورها SplitStatements
روال جداکردن دستورها(sql: رشته): وکتور<رشته>; درون رشتهها جداکننده نیست.نمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
ساخت جدول EnsureTable
روال ساخت جدول(m: مهاجرت گر، c: dyn اتصال): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
نسخه طرحواره SchemaVersion
روال نسخه طرحواره(m: مهاجرت گر، c: dyn اتصال): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
اعمال شده IsApplied
روال اعمال شده(m: مهاجرت گر، c: dyn اتصال، version: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
تعداد در انتظار PendingCount
روال تعداد در انتظار(m: مهاجرت گر، c: dyn اتصال): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
مهاجرت به بالا MigrateUp
روال مهاجرت به بالا(m: مهاجرت گر، c: dyn اتصال): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam
بازگردانی Rollback
روال بازگردانی(m: مهاجرت گر، c: dyn اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-Connection.salam
مهاجرت به MigrateTo
روال مهاجرت به(m: مهاجرت گر، c: dyn اتصال، target: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-Migrate.salam