Paris / Idiorm:检查数据库是否为空?

时间:2013-08-26 08:07:06

标签: mysql idiorm

我搜索了类似的问题,但我得到的只是“创建表,如果不存在”。

这根本不是我想要的!我只想检查是否存在5个需要的表,创建它们是完全不同的。

意思是我只想要“IF NOT EXISTS”部分,没有“CREATE TABLE”。无论如何,还有Idiorm吗?

P / S:如果可能,请编写整个代码行(例如ORM :: raw_execute('query')或其他内容)。我几乎没有使用数据库查询的经验:()

2 个答案:

答案 0 :(得分:1)

花了好几个小时之后,问题出现了:“如何在paris / idiorm中运行执行sql查询并获取查询结果?”

Ididorm的raw_execute()不返回查询结果,但如果查询成功执行则返回true,否则返回false。

最后,我用以下方法解决了问题:

ORM :: for_table('') - > raw_query(“用于检查表格是否存在的SQL查询”) - > find_one();

我没有给表名作为for_table()的参数,而是给它一个空字符串然后调用raw_query(),这相当于直接调用原始查询。它适用于我的情况。我还必须重置Idiorm的数据库连接并清除缓存,以便在不同数据库之间切换时工作。

答案 1 :(得分:0)

在MySql上,您可以查询information_schema.tables视图

SELECT n.table_name,
       case when x.table_name is null
            then 'Does not exist'
            else 'Exists'
       end as chk
FROM (
    select 'mytable' as table_name union all
    select 'table1' union all
    select 'tbl1' union all
    select 'another_table' union all
    select 'fifth_table'
) n
LEFT JOIN information_schema.tables x
ON ( x.table_schema = 'test' AND x.table_name = n.table_name );



+ --------------- + -------------- +
| table_name      | chk            |
+ --------------- + -------------- +
| mytable         | Exists         |
| tbl1            | Exists         |
| table1          | Does not exist |
| another_table   | Does not exist |
| fifth_table     | Does not exist |
+ --------------- + -------------- +