首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MySQL检索数据到Prolog知识库?

从MySQL检索数据到Prolog知识库?
EN

Stack Overflow用户
提问于 2016-03-09 03:43:26
回答 1查看 257关注 0票数 2

有没有办法将数据从MySQL检索到Prolog知识库?

例如,我正在尝试将字段:Nameprice从MySQL数据库中的表chair检索到Prolog知识库,而不是在Prolog中声明它们。

EN

回答 1

Stack Overflow用户

发布于 2016-03-09 07:25:29

@Boris的评论很有趣。假设有一个内置程序可以发出外壳命令并获得输出流(在SWI-Prolog中,我们可以使用库(process)),下面是一个从MySQL查询Wordpress表的简单接口

代码语言:javascript
运行
复制
query(USER, PWD, DB, QUERY, Columns, Rows) :-
    atom_concat('-p', PWD, PPWD),
    process_create(path(mysql), ['-u', USER, PPWD, '-D', DB, '-e', QUERY], [stdout(pipe(Out)),stderr(std)]),
    read_record(Out, Columns),
    read_records(Out, Rows).

read_record(Out, Fields) :-
    read_line_to_codes(Out, Codes),
    Codes \= end_of_file,
    atom_codes(Line, Codes),
    atomic_list_concat(Fields, '\t', Line).

read_records(Out, [Record|Rs]) :-
    read_record(Out, Record),
    !, read_records(Out, Rs).
read_records(Out, []) :-
    close(Out).

测试运行:

代码语言:javascript
运行
复制
test_query :-
    query('------','-----',a_blog,"select * from wp_options limit 10", Cols,Rows),
    writeln(columns:Cols),
    maplist(writeln, Rows).

收益率

代码语言:javascript
运行
复制
?- test_query.
columns:[option_id,option_name,option_value,autoload]
[1,siteurl,http://localhost/a_blog,yes]
[2,home,http://localhost/a_blog,yes]
[3,blogname,a blog,yes]
[4,blogdescription,Just another WordPress site,yes]
[5,users_can_register,0,yes]
...
true.

因此,不显示,只需断言记录:

代码语言:javascript
运行
复制
capture_table(USER, PWD, DB, QUERY, Functor) :-
    query(USER, PWD, DB, QUERY, _Columns, Rows),
    maplist(capture_table(Functor), Rows).
capture_table(Functor, Row) :-
    Clause =.. [Functor|Row],
    assertz(Clause).
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35876622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档