这里是 web2py 和 python 新手。
我尝试使用 MySQL DB 作为后端数据库来制作一个示例 Web 应用程序。我在 MySQL 中单独创建了一个表并填充了值,我想在 UI 中显示表值。我有一个错误 -
“类'gluon.contrib.pymysql.err.InternalError'>(1050,u“表''已经存在”)”
我的配置文件如下:
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 即可。谢谢。
最佳答案
您有 migrate=True
,并且 web2py 没有任何已创建该表的记录,因此它正在尝试再次创建该表。您可以通过临时设置 fake_migrate=True
(或者设置 migrate=False
并且不让 web2py 处理迁移)来让 web2py 更新其有关表的记录。
另外,请注意,默认情况下,web2py 期望每个表都包含一个名为“id”的自动递增整数字段,因此您应该确保您的表包含这样的字段。更好的是,如果该表无论如何都是新的,请不要在 MySQL 中手动创建它。相反,只需让 web2py 创建它(它将在第一次运行表定义时执行此操作)。一旦 web2py 创建了它,您就可以添加您喜欢的任何记录。
关于mysql - Web2Py MySQL 数据检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456523/