【问题标题】:How to get a specific part of information from database with Python cgi?如何使用 Python cgi 从数据库中获取特定部分的信息?
【发布时间】:2017-04-12 15:46:21
【问题描述】:

很高兴认识大家。 我是 Python cgi 的新手,对 PHP 有一点经验。使用 PHP 我创建了一个待办事项列表程序。完成它后,我决定用 Python cgi 编写相同的程序来检查它会有多么不同。但是因为我对 Python 真的很陌生,所以我被困在如何删除一行的基本知识上。

<?php

require_once 'init.php';

if(isset($_GET['item'])){

   $id = $_GET['item'];

   if(!empty($id)){
       $deleteQuery = $db->prepare("
           DELETE
           FROM items
           WHERE id=:id
       ");

       $deleteQuery->execute([
           'id' => $id
       ]);

   }

};

header('Location:webPHP.php');

使用 PHP 检索行的特定部分很简单,但我如何才能做到这一点并用 Python 确认它是否不为空?

【问题讨论】:

  • SQL、SQLite 还是别的什么?
  • mysql 使用 wamp 服务器
  • 我没有在这台电脑上运行mysql,因此无法提供直接的答案。如果您要在 SO 中搜索 python cgi mysql,您会得到一组结果,其中一些可能有用。确实stackoverflow.com/questions/22443209/… 对你来说可能已经足够了。如果cursor.fetchall 的结果为空(即None),那么您知道您在SQL 选择中指定的行不存在。
  • 是的,我看到了。但是如何选择行的特定部分并检查它是否为空?在上面的示例中,我检查该行的 id 是否不为空,如何在 Python 中执行此操作?

标签: php python cgi


【解决方案1】:

我不记得这个问题的答案了。它可能类似于 sqlite 发生的情况,在这种情况下,您可能会从以下内容中受益。本质上,一些 Python 库会将来自 SQL 的 NULL 更改为 Python 可以理解的 None。

import sqlite3

import os
os.chdir('c:/scratch')

conn = sqlite3.connect('temp.sqlite')
conn.row_factory = sqlite3.Row
c = conn.cursor()

c.execute('''SELECT * FROM JustDate WHERE Date_1 = "1970-01-23"''')

for row in c.fetchall():
    for key in row.keys():
        if row[key]:
            print ('Field ', key, 'is not NULL (', row[key], ')')
        else:
            print ('Field ', key, 'is NULL')

Field  Date_1 is not NULL ( 1970-01-23 )
Field  Date_2 is NULL
Field  Date_3 is not NULL ( 2014-08-17 )

这是一个有两个记录的数据库表。我选择其中一条记录并指出如何检查字段的内容是否为无。

简而言之,如果您编写 if &lt;name&gt;&lt;name&gt; 计算结果为 None、零、非空字符串(或其他一些内容之一)以外的值,则此表达式的计算结果为 True。否则为假。

【讨论】:

  • key 代表什么?
  • row.keys() 是一本字典。 key 只是一个形式变量,它假定字典中键集中的一系列值。它假定的每个值都是字典中的“键”。我可以使用任何标识符来代替 keys
  • 但是根据您的示例,您选择了数据的特定部分。我需要访问从其他页面打印发送的数据 ("Delete".format(x[0]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多