【发布时间】:2018-12-07 22:41:35
【问题描述】:
我正在尝试使用 python 中的对象示例创建数据库,但我收到如下错误消息: “AttributeError:‘Eu’对象没有‘翻译’属性” 我不知道如何解决这个问题
对不起,我的英语不是很好 这是我的代码:
import pymysql.cursors
class Eu:
def __init__(self, nome='mel', idade=22):
self.nome = nome
self.idade = idade
eu = Eu()
nome = eu.nome
idade = eu.idade
# connect do database
conn = pymysql.connect(host='localhost',
user='root',
password='')
# create a cursor and a database
conn.cursor().execute('CREATE DATABASE banco73')
conn.cursor().execute('USE banco73')
# create tables
conn.cursor().execute('CREATE TABLE tabela73 (eu BLOB)')
# use tables
conn.cursor().execute("""INSERT INTO tabela73 VALUES (?)""", (eu))
整个控制台消息:
runfile('C:/Users/Usuario/.spyder-py3/temp.py', wdir='C:/Users/Usuario/.spyder-py3')
Traceback (most recent call last):
File "<ipython-input-59-9994dddea11c>", line 1, in <module>
runfile('C:/Users/Usuario/.spyder-py3/temp.py', wdir='C:/Users/Usuario/.spyder-py3')
File "C:\Users\Usuario\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Usuario/.spyder-py3/temp.py", line 36, in <module>
conn.cursor().execute("""INSERT INTO tabela73 VALUES (?)""", (eu))
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\cursors.py", line 168, in execute
query = self.mogrify(query, args)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\cursors.py", line 147, in mogrify
query = query % self._escape_args(args, conn)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\cursors.py", line 133, in _escape_args
return conn.escape(args)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\connections.py", line 839, in escape
return converters.escape_item(obj, self.charset, mapping=mapping)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\converters.py", line 27, in escape_item
val = encoder(val, mapping)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\converters.py", line 118, in escape_unicode
return u"'%s'" % _escape_unicode(value)
File "C:\Users\Usuario\Anaconda3\lib\site-packages\pymysql\converters.py", line 73, in _escape_unicode
return value.translate(_escape_table)
AttributeError: 'Eu' object has no attribute 'translate'
【问题讨论】:
-
我不确定您希望在这里保存什么。 MySQL 对您的 Eu 类一无所知。您需要将 nome 和 idade 字段保存在单独的列中;您可以使用 peewee 或 SQLAlchemy 之类的对象关系映射器为您自动执行此操作。
-
@Daniel 我探索了 SQLAlchemy 和 DjangoORM。这两个都是维护良好且可扩展的库。但是,我正在做一个小项目,而 ORM 似乎对此有点过头了。有没有其他更简单的方法来实现这一点?
标签: python mysql python-3.x class object