栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQLite / SQLAlchemy:如何强制执行外键?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQLite / SQLAlchemy:如何强制执行外键?

我现在有这个工作:

如上所述下载最新的sqlite和pysqlite2版本:确保python在运行时使用了正确的版本。

import sqlite3   import pysqlite2 print sqlite3.sqlite_version   # should be 3.6.23.1print pysqlite2.__path__       # eg C:\Python26\lib\site-packages\pysqlite2

接下来添加一个PoolListener:

from sqlalchemy.interfaces import PoolListenerclass ForeignKeysListener(PoolListener):    def connect(self, dbapi_con, con_record):        db_cursor = dbapi_con.execute('pragma foreign_keys=ON')engine = create_engine(database_url, listeners=[ForeignKeysListener()])

然后要小心如何测试外键是否起作用:我在这里有些困惑。当使用sqlalchemy
ORM进行

add()
处理时,我的导入代码将隐式处理关系连接,因此永远不会失败。添加
nullable=False
一些
ForeignKey()
说明对我有帮助。

我测试sqlalchemy sqlite外键支持已启用的方法是从声明性ORM类进行手动插入:

# exampleins = Coverage.__table__.insert().values(id = 99,   description = 'Wrong',   area = 42.0,   wall_id = 99,  # invalid fkey id   type_id = 99)  # invalid fkey_idsession.execute(ins)

这里

wall_id
type_id
都是
ForeignKey()
的,如果试图联播无效fkeys
sqlite的正确,现在抛出异常。这样就行了!如果删除侦听器,则sqlalchemy将愉快地添加无效的条目。

我认为主要问题可能是多个sqlite3.dll(或.so)散布。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号