解析连接到 python 脚本的 MySQL 数据库

Parsing a MySQL db connected to a python script

我使用 python-mysqldb 包创建了这个 python 脚本,我正在尝试从 Bible.sql 文件打印请求的经文。 (警告:链接的 .sql 文件很大,我已经对下面的 sql 语句进行了采样)

我不完全熟悉查询 SQL 数据库,到目前为止我能做的就是 show databases; show tables;select * from bible;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| openVdev           |
+--------------------+
2 rows in set (0.00 sec)

mysql> show tables;
+--------------------+
| Tables_in_openVdev |
+--------------------+
| bible              |
+--------------------+
1 row in set (0.00 sec)

select * from bible; 只是为我转储所有内容,我如何解析文件中的某个经文/圣经段落?

这是 SQL 语法的示例:

INSERT INTO `bible` VALUES (1,'Genesis',1,1,'IN THE beginning God 
INSERT INTO `bible` VALUES (531,'Genesis',21,17,'And God heard the voice
INSERT INTO `bible` VALUES (1035,'Genesis',35,23,'The sons of Leah: Reuben,
INSERT INTO `bible` VALUES (1531,'Genesis',50,24,'And Joseph said to his brethren,
INSERT INTO `bible` VALUES (1985,'Exodus',17,1,'ALL THE congregation

还有几个版本的圣经由关键值标识:

DROP TABLE IF EXISTS `bible`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bible` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `book` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `chapter` int(11) NOT NULL,
  `verse` int(11) NOT NULL,
  `AMP` text COLLATE utf8_unicode_ci NOT NULL,
  `ASV` text COLLATE utf8_unicode_ci NOT NULL,
  `BENG` text COLLATE utf8_unicode_ci NOT NULL,
  `CEV` text COLLATE utf8_unicode_ci NOT NULL,
  `DARBY` text COLLATE utf8_unicode_ci NOT NULL,
  `ESV` text COLLATE utf8_unicode_ci NOT NULL,
  `KJV` text COLLATE utf8_unicode_ci NOT NULL,
  `MKJV` text COLLATE utf8_unicode_ci NOT NULL,
  `MSG` text COLLATE utf8_unicode_ci NOT NULL,
  `NASB` text COLLATE utf8_unicode_ci NOT NULL,
  `NIV` text COLLATE utf8_unicode_ci NOT NULL,
  `NKJV` text COLLATE utf8_unicode_ci NOT NULL,
  `NLT` text COLLATE utf8_unicode_ci NOT NULL,
  `NRSV` text COLLATE utf8_unicode_ci NOT NULL,
  `WEB` text COLLATE utf8_unicode_ci NOT NULL,
  `YLT` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`book`,`chapter`,`verse`),
  KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=31103 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

我按照这个 post 创建了 python-MySQLdb 连接

import MySQLdb

db = MySQLdb.connect(host="localhost", # your host, usually localhost
                     user="openVuser", # your username
                      passwd="openVpw", # your password
                      db="openVdev") # name of the data base

# you must create a Cursor object. It will let
#  you execute all the queries you need
cur = db.cursor() 

# Use all the SQL you like
cur.execute("SELECT * FROM bible")

Question_1 = "\n Please enter a scripture?\n"
scripture = raw_input(Question_1)

print scripture


print all the first cell of all the rows
for row in cur.fetchall() :
    print row[0]    

如果看起来我没有做出任何努力,我深表歉意,但已经一个月没有任何进展。我很难弄清楚如何使用命令行查询 MySQL 数据库,尽管我已经能够在 tutorial:

方面取得一些进展
mysql> describe bible;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | MUL | NULL    | auto_increment |
| book    | varchar(25) | NO   | PRI | NULL    |                |
| chapter | int(11)     | NO   | PRI | NULL    |                |
| verse   | int(11)     | NO   | PRI | NULL    |                |
| AMP     | text        | NO   |     | NULL    |                |
| ASV     | text        | NO   |     | NULL    |                |
| BENG    | text        | NO   |     | NULL    |                |
| CEV     | text        | NO   |     | NULL    |                |
| DARBY   | text        | NO   |     | NULL    |                |
| ESV     | text        | NO   |     | NULL    |                |
| KJV     | text        | NO   |     | NULL    |                |
| MKJV    | text        | NO   |     | NULL    |                |
| MSG     | text        | NO   |     | NULL    |                |
| NASB    | text        | NO   |     | NULL    |                |
| NIV     | text        | NO   |     | NULL    |                |
| NKJV    | text        | NO   |     | NULL    |                |
| NLT     | text        | NO   |     | NULL    |                |
| NRSV    | text        | NO   |     | NULL    |                |
| WEB     | text        | NO   |     | NULL    |                |
| YLT     | text        | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
20 rows in set (0.00 sec)

我对圣经中的 KJV 密钥感兴趣 table,我如何选择该密钥并继续阅读经文,并将收到的用户输入解析为 SQL 查询?

Pseudocode:
Print: What scripture would you like to look up?
User: Romans 12:1
cur.execute("SELECT KJV FROM bible key")
cur.execute("SELECT 'Romans 12:1' FROM table")
print cur.execute
/* Generic query */
SELECT `key1`, `key2`, `key3` FROM `table` WHERE `another_key` LIKE 'SOME_STRING';

/* Specific query for your problem */
SELECT `KJV` FROM `bible` WHERE `chapter` LIKE 'Romans' AND `verse` = '12';