SQLAutoCode - 尝试生成模式时出错

时间:2013-07-13 18:22:10

标签: python sqlalchemy

我正在尝试自动生成在SQLalchemy中使用的模式,我使用sqlautocode来执行此操作,我使用以下命令

D:~ admin$ sqlautocode mysql://'user':"pass"@xx.xx.xx.xx:3306/db_name -o tables.py

但我一直收到以下错误..

Traceback (most recent call last):
  File "/usr/local/bin/sqlautocode", line 9, in <module>
load_entry_point('sqlautocode==0.7', 'console_scripts', 'sqlautocode')()
  File "/Library/Python/2.7/site-packages/distribute-0.6.45-py2.7.egg/pkg_resources.py", line 343, in load_entry_point
  return get_distribution(dist).load_entry_point(group, name)
  File "/Library/Python/2.7/site-packages/distribute-0.6.45-py2.7.egg/pkg_resources.py", line 2354, in load_entry_point
return ep.load()
  File "/Library/Python/2.7/site-packages/distribute-0.6.45-py2.7.egg/pkg_resources.py", line 2060, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
 File "/Library/Python/2.7/site-packages/sqlautocode/main.py", line 4, in <module>
from declarative import ModelFactory
 File "/Library/Python/2.7/site-packages/sqlautocode/declarative.py", line 17, in <module>
from sqlalchemy.ext.declarative import _deferred_relation as _deferred_relationship
ImportError: cannot import name _deferred_relation

https://pypi.python.org/pypi/sqlautocode

2 个答案:

答案 0 :(得分:3)

改为使用sqlacodegen

D:~ admin$ sqlacodegen mysql://'users':"pass"@xx.xx.xx.xx:3306/db_name --outfile tables.py

答案 1 :(得分:0)

这是因为你的sqlalchemy版本高于07.
在C:\ Python27 \ Lib \ site-packages \ sqlautocode

中找到declarative.py

从sqlalchemy.ext.declarative import _deferred_relationship更改为 来自sqlalchemy.ext.declarative.clsregistry import _deferred_relationship

这项工作在我的工作中。