postgres数据增加
1.postgres_db.rs数据库文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use crate::schema::posts::published;
use crate::models::{NewPost, Post};
use diesel::pg::PgConnection;
use diesel::prelude::*;
use dotenvy::dotenv;
use std::env;
use crate::schema::posts::dsl::posts;
// 获取数据库连接
pub fn db_establish_connection() -> PgConnection {
dotenv().ok();
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
PgConnection::establish(&database_url)
.unwrap_or_else(|_| panic!("Error connecting to {}", database_url))
}
// 增加NewPost数据
pub fn db_create_post(connection: &mut PgConnection, title: &str, body: &str) -> Post {
use crate::schema::posts;
let new_post = NewPost { title, body };
diesel::insert_into(posts::table)
.values(&new_post)
.returning(Post::as_returning())
.get_result(connection)
.expect("Error saving new post")
}
|
2.create_post.rs文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
use diesel::PgConnection;
use crate::postgres_db::{db_create_post};
use std::io::{stdin};
//循环输入标题和内容,并在数据库中插入标题和内容;当在内容末尾输入end时,结束输入。
pub fn create_post(connection: &mut PgConnection) {
loop {
let mut title = String::new();
let mut body = String::new();
println!("What would you like your title to be?");
stdin().read_line(&mut title).unwrap();
let title = title.trim_end();
println!("\nOk! Let's write {title} if you input end,input is terminal ",);
stdin().read_line(&mut body).unwrap();
if body.contains("end") {
if let Some(index) = body.rfind("end") {
body = body[..index].to_string(); // 使用切片操作来截取需要的部分
println!("body:{}", body);
}
break;
}
let post = db_create_post(connection, title, &body);
println!("\nSaved draft {title} with id {}", post.id);
}
}
|
3.main.rs文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
mod models;
mod postgres_db;
mod publish_post;
mod show_posts;
mod create_post;
mod schema;
mod get_post;
mod delete_post;
use crate::show_posts::{show_posts, show_all_posts };
use crate::create_post::create_post;
use crate::publish_post::publish_post;
use crate::get_post::get_post;
use crate::delete_post::delete_post;
use crate::postgres_db::db_establish_connection;
fn main() {
let connection = &mut db_establish_connection();
create_post(connection);
show_all_posts(connection);
}
|
4.效果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
/Users/ksnowlv/.cargo/bin/cargo run --color=always --package diesel_demo_postgres --bin diesel_demo_postgres
warning: `diesel_demo_postgres` (bin "diesel_demo_postgres") generated 11 warnings (run `cargo fix --bin "diesel_demo_postgres"` to apply 4 suggestions)
Finished dev [unoptimized + debuginfo] target(s) in 0.07s
Running `target/debug/diesel_demo_postgres`
What would you like your title to be?
hello
Ok! Let's write hello if you input end,input is terminal
1234567890111
Saved draft hello with id 33
What would you like your title to be?
world
Ok! Let's write world if you input end,input is terminal
12334
Saved draft world with id 34
What would you like your title to be?
winter
Ok! Let's write winter if you input end,input is terminal
1
Saved draft winter with id 35
What would you like your title to be?
spring
Ok! Let's write spring if you input end,input is terminal
2end
body:2
---show_all_posts---
Displaying 12 posts
id:33
title:hello
------body-----
1234567890111
id:34
title:world
------body-----
12334
id:35
title:winter
------body-----
1
id:1
title:标题1
------body-----
你是谁
id:2
title:主题
------body-----
where are you going?
id:3
title:test1111
------body-----
123456
id:4
title:test
------body-----
测试
id:5
title:ni
------body-----
aaa
id:6
title:示例
------body-----
bbbbb
id:7
title:cccc
------body-----
ccccccccc end
id:8
title:dddd
------body-----
1234end
id:9
title:e
------body-----
1
|
文章作者
梵梵爸
上次更新
2024-03-03
许可协议
原创文章,如需转载请注明文章作者和出处。谢谢