Python& Mysql查询问题 - 结果错误

时间:2016-04-07 20:31:41

标签: mysql python-2.7 mysql-python

我试图在我的python代码中使用mysql但是当我在代码中运行select查询时,我得到了错误的结果。

这是我的app.py代码:

import web
import pymysql
import createdb

render = web.template.render('templates/')

urls = (
    '/', 'index'
)

class index:
    def GET(self):
        createdb.createTables()
        result = createdb.select()
        return render.index(result)


if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()   

这是我的createdb.py代码:

import pymysql

# Connect to the database
connection = pymysql.connect(host='localhost',
                             port=3306,
                             user='root',
                             password='xxxx',
                             db='mysql',
                             charset='utf8',
                             cursorclass=pymysql.cursors.DictCursor)

def createTables():
    cursor = connection.cursor()
    cursor.execute("CREATE DATABASE mydatabase")
    cursor.execute("CREATE TABLE words(id INT, name VARCHAR(255))")
    cursor.execute("INSERT INTO words(id, name) VALUES(1, 'look')")
    cursor.execute("INSERT INTO words(id, name) VALUES(2, 'book')")
    cursor.execute("INSERT INTO words(id, name) VALUES(3, 'try')")
    cursor.execute("INSERT INTO words(id, name) VALUES(4, 'read')")


def select():
    cursor = connection.cursor()
    selectResult = cursor.execute("SELECT name FROM words WHERE id = 3")
    return selectResult

if __name__ == "__main__":
    createTables()

这是我的index.html代码:

$def with (name)

$if name:
    I just wanted to say <em>hello</em> to $name.
$else:
    <em>Hello</em>, world!

在我的情况下,我期待像这样的结果;

  

我只是想说 hello 来尝试。

但是,我得到以下结果;

  

我只想说 hello 为1。

运行应用程序后,我检查了我的mysql工作台,发现数据库是作为 mydatabase 创建的,但是没有创建表。但是,在我停止并重新运行应用程序后,我收到一条错误消息,指出该数据库已存在。那很好,然后我在创建db的那一行前面发表评论。重新运行应用程序后,发生另一个错误,它表示单词表已经存在。正如我之前所说,当我检查mysql工作台时,没有这样的表。也许这个错误的查询结果与此问题有关。这就是为什么我想详细解释它。

你可以告诉我这里有什么问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

在我更改了我的createdb.py代码后,我解决了我的问题。这是它的修改版本;

import pymysql

# Connect to the database
connection = pymysql.connect(host='localhost',
                             port=3306,
                             user='root',
                             password='xxxxx',
                             db='mydatabase',
                             charset='utf8',
                             cursorclass=pymysql.cursors.DictCursor)

def createTables():
    cursor = connection.cursor()
    cursor.execute("CREATE TABLE words(id INT, name VARCHAR(255))")
    cursor.execute("INSERT INTO words(id, name) VALUES(1, 'look')")
    cursor.execute("INSERT INTO words(id, name) VALUES(2, 'book')")
    cursor.execute("INSERT INTO words(id, name) VALUES(3, 'try')")
    cursor.execute("INSERT INTO words(id, name) VALUES(4, 'read')")
    connection.commit()

def select():
    cursor = connection.cursor()
    cursor.execute("SELECT name FROM words WHERE id = 3")
    selectResult = cursor.fetchone()
    value = "%s" % (selectResult["name"])
    return value

if __name__ == "__main__":
    createTables()
    connection.close()

不,我得到了我想要的结果:

  

我只是想说 hello 来尝试。