Web2Py MySQL数据检索

时间:2013-10-18 18:22:33

标签: mysql web2py

这里有一个web2py和python新手。

我尝试用MySQL DB作为后端数据库做一个示例Web应用程序。我已经在MySQL中单独创建了一个表并填充了值,我想在UI中显示表值。我有一个错误 -

“class'gluon.contrib.pymysql.err.InternalError'>(1050,你”桌子已经存在“)”

我的配置文件如下:

db.py

if not request.env.web2py_runtime_gae:
    db = DAL('mysql://xxxxx',pool_size=1,check_reserved=['all'])
else:

    session.connect(request, response, db=db)

response.generic_patterns = ['*'] if request.is_local else []


from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
auth = Auth(db)
crud, service, plugins = Crud(db), Service(), PluginManager()

## create all tables needed by auth if not custom tables
auth.define_tables(username=False, signature=False)


## after defining tables, uncomment below to enable auditing
# auth.enable_record_versioning(db)
db.define_table('user_details',
   Field('user_id', 'text'),
    Field('first_name', 'text'),
    Field('last_name', 'text'),
    Field('city', 'text'),
    Field('user_st', 'text'),migrate=True)

我的主页看起来像这样

{{ rows = db(db.user_details).select() }}
{{if len(rows):}}
<ul>
{{ for r in rows: }}
  <li>

        {{=r.name}}

  </li>
{{pass}}
</ul>
{{pass}}

我不确定我错过了什么。任何帮助表示感谢,谢谢。


我现在明白了。只需要改变migrate = False。感谢。

1 个答案:

答案 0 :(得分:1)

您有migrate=True,并且web2py没有任何已创建该表的记录,因此它正在尝试再次创建它。您可以通过临时设置fake_migrate=True(或者设置migrate=False并且不要让web2py处理迁移)来获取web2py来更新有关该表的记录。

另外,请注意,默认情况下,web2py希望每个表都包含一个名为“id”的自动增量整数字段,因此您应该确保您的表包含这样的字段。更好的是,如果表是新的,不要在MySQL中手动创建它。相反,只需让web2py创建它(它将在第一次运行表定义时执行)。一旦它由web2py创建,您就可以添加任何您喜欢的记录。