forked fromjane0009/zig-postgres
- Notifications
You must be signed in to change notification settings - Fork2
rofrol/zig-postgres
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Light bindings around Postgreslibpq
This is tested with zig0.8
Installinglibpq
on debian linux
sudo apt-get install libpq-dev
There is also native zig client in pre-alpha statushttps://github.com/star-tek-mb/pgz
Example of importing and usinghttps://github.com/zig-postgres/zig-postgres-template
Running examples or tests requiresdb
url attribute, for example
zig build test -Ddb=postgresql://db_url/mydb
constPg=@import("postgres").Pg;vargpa=std.heap.GeneralPurposeAllocator(.{}){};constallocator=&gpa.allocator;deferstd.debug.assert(!gpa.deinit());vardb=tryPg.connect(allocator,"postgresql://root@postgresURL:26257?sslmode=disable");
constschema=\\CREATE DATABASE root;\\CREATE TABLE IF NOT EXISTS users (id INT, name TEXT, age INT); ;_=trydb.exec(schema);
Be mindful that this query, usesstruct name
as lowercase letters fortable
name.
constUsers=struct {id:i16,name: []constu8,age:i16, };_=trydb.insert(Users{ .id=1, .name="Charlie", .age=20 });_=trydb.insert(Users{ .id=2, .name="Steve", .age=25 });_=trydb.insert(Users{ .id=3, .name="Karl", .age=25 });_=trydb.insert(&[_]Users{Users{ .id=4, .name="Tony", .age=25 },Users{ .id=5, .name="Sara", .age=32 },Users{ .id=6, .name="Fred", .age=11 }, });
_=trydb.execValues("SELECT * FROM users WHERE name = {s}", .{"Charlie"});_=trydb.execValues("INSERT INTO users (id, name, age) VALUES ({d}, {s}, {d})", .{5,"Tom",32 });
varresult=trydb.execValues("SELECT * FROM users WHERE id = {d}", .{2});varuser=result.parse(Users,null).?;print("{d}\n", .{user.id});print("{s}\n", .{user.name});
varresults=trydb.execValues("SELECT * FROM users WHERE age = {d}", .{25});while (results.parse(Users,null))|user| {print("{s}\n", .{user.name});}
varresult=trydb.execValues("SELECT * FROM users WHERE name = {s}", .{"Charlie"});varuser=result.parse(Users,null}).?;if(user)print("{s}\n", .{user.name});
Many thanks for thisrepository