Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Sep 16, 2023. It is now read-only.
/zig-postgresPublic archive
forked fromtonis2/zig-postgres

Zig wrapper for postgres

License

NotificationsYou must be signed in to change notification settings

jane0009/zig-postgres

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Light bindings around Postgreslibpq

This is tested with zig0.8

Installinglibpg on debian linux

sudo apt-get install libpq-dev

How to install


Add this repository as submodule

git submodule add git@github.com:tonis2/zig-postgres.git dependencies/zig-postgres

Add following code lines into your projectbuild.zig

This code adds the package and links required libraries.

exe.addPackage(.{ .name="postgres", .path="/dependencies/zig-postgres/src/postgres.zig" });exe.linkSystemLibrary("c");exe.linkSystemLibrary("libpq");

Running examples or tests requiresdb url attribute, for example

zig build test -Ddb=postgresql://db_url

zig build main -Ddb=postgresql://db_url

How to use


Connecting to database

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");

Executing SQL

constschema=\\CREATE DATABASE IF NOT EXISTS root;\\CREATE TABLE IF NOT EXISTS users (id INT, name TEXT, age INT);    ;_=trydb.exec(schema);

Inserting data

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 },  });

Exec query with values

_=trydb.execValues("SELECT * FROM users WHERE name = {s}", .{"Charlie"});_=trydb.execValues("INSERT INTO users (id, name, age) VALUES ({d}, {s}, {d})", .{5,"Tom",32 });

Read query results

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

About

Zig wrapper for postgres

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Zig100.0%

[8]ページ先頭

©2009-2025 Movatter.jp