解析连接到 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';
我使用 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';