2

我一生中第一次在 linux 中进行 Web 开发,一旦它在 linux 机器上运行,它将被移植到嵌入式系统上。我在 mydb 数据库中有一个名为 Login 的表,带有密码。我使用 peewee 作为 ORM 进行连接。这是我正在运行的脚本

from peewee import *
mysql_db = MySQLDatabase('mydb', user='root',passwd='rakesh')
class Login(Model):
    usr_name = CharField()
    passwd = TextField()

mysql_db.connect()
usr = Login(usr_name="me", passwd='Peewee is cool')
usr.save()
for user in usr.filter(usr_name="me"):
    print usr.title

我在 mydb 数据库(mysql)中创建了一个名为 Login 的简单表,当我查询并查看时似乎没问题

现在,当我运行此代码时,出现异常

Traceback (most recent call last):
  File "/home/rakesh/Ubuntu One/PDNFlywheels/PDB/access_ex.py", line 53, in <module>
    usr.save()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1949, in save
    new_pk = insert.execute()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1355, in execute
    result = self.database.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1446, in execute
    return self.execute_sql(sql, params, commit)
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1449, in execute_sql
    cursor = self.get_cursor()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1420, in get_cursor
    return self.get_conn().cursor()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1413, in get_conn
    self.connect()
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1401, in connect
    self.__local.conn = self._connect(self.database, **self.connect_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 1541, in _connect
    return sqlite3.connect(database, **kwargs)
OperationalError: unable to open database file

正如您在最后一行中看到的那样,它试图使用 sqllite3 查找数据库,但我使用的是 mysql。我不明白为什么会这样。大多数 peewee 烹饪书籍、示例和其他解释都使用 sqllite 我从未发现任何直接的 mysql hack。

4

1 回答 1

4

您缺少要使用哪个数据库的指令。请阅读文档。

http://peewee.readthedocs.org/en/latest/peewee/cookbook.html#using-with-mysql

mysql_db = MySQLDatabase('mydb', user='root',passwd='rakesh')

class Login(Model):
    usr_name = CharField()
    passwd = TextField()

    class Meta:
        database = mysql_db
于 2012-11-21T17:53:59.847 回答