首页 > 其他分享 >django连接达梦

django连接达梦

时间:2024-01-29 20:24:38浏览次数:23  
标签:name quote self django cursor table 连接 达梦

问题1.django 中连接数据库使用ORM框架,新增数据时,产生报错。

问题描述: DatabaseError: [CODE:-2111]第1 行附近出现错误:无效的列名[AAAAAAAAAAAAAAAAAR]

查看数据库发现数据已经录入,问题出现在返回新增结果时候。通过查找发现是django_dmpython中自带文件调用方法时候的原生语法错误。

解决办法(windows)

修改文件:C:\Users\lenovo\Env\django2\Lib\site-packages\django_dmPython\operations.py

def last_insert_id(self, cursor, table_name, pk_name):
    """
        Given a cursor object that has just performed an INSERT statement into
        a table that has an auto-incrementing ID, returns the newly created ID.

        This method also receives the table name and the name of the primary-key
        column.
        """
    # sq_name = self._get_sequence_name(table_name)
    # cursor.execute('SELECT "%s".currval FROM dual' % sq_name)
    if cursor.lastrowid is not None:
        # query = 'select %s from %s where rowid = %s' %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid)
        
        
        # 把上面的代码注释掉,改成下面的!!!!!!!:
        query = """select %s from %s where rowid = '%s'""" % (self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid )
        
        
        cursor.execute(query)
    else:
        cursor.execute('SELECT MAX(%s) from %s' %(self.quote_name(pk_name), self.quote_name(table_name)))

        value = cursor.fetchone()[0]
        return value

大功告成!!!

解决办法(中标麒麟)

修改文件:/lib/python3.9/site-packages/django_dmPython/operations.py

# 错误语句:
query = 'select %s from %s where rowid = %s' %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid)

错误原因:where 条件查询中如果条件是字符串需要在语句中标记为字符串。

# 解决方式:修改本文件中语句为:
query = """select %s from %s where rowid = '%s'""" %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid)

大功告成!!!

问题2:cannot import name 'Random'

from django.db.models.expressions import F, OrderBy, Random, RawSQL, Ref, Value
ImportError: cannot import name 'Random' from 'django.db.models.expressions' (/usr/local/lib/python3.10/site-packages/django/db/models/expressions.py)

打开文件:C:\Users\lenovo\Env\django2\Lib\site-packages\django_dmPython\compiler.py
C:\Users\lenovo\Env\django2\Lib\site-packages\django_dmPython\compiler.py,注释掉Random部分

image-20240104140357763

标签:name,quote,self,django,cursor,table,连接,达梦
From: https://www.cnblogs.com/DQ-MINE/p/17995252

相关文章

  • django打包(linux)
    1.新建uvicorn文件(1)安装uvicorn插件pipinstalluvicorn(2)新建main.py文件fromuvicorn.serverimportConfig,Serverfromserver.asgiimportapplicationconfig=Config(app=application,host="0.0.0.0",port=8000,loop="asyncio",log_level=&q......
  • django打包(win)
    注意:1.打包工程(windows)1.安装pyinstallerpipinstallpyinstaller2.制作.spec文件pyi-makespec-Dmanage.py运行成功后可在项目所在目录下发现一个spec(规范)文件3.修改.spec文件把settings.py中apps里面的东西复制到manage.spec里面4.开始打包pyinstallermanage.......
  • Django - admin 表单编辑页面,增加自定义功能,前端上传视频到oss
    #背景:可以在admin编辑页面原有基础上,增加一些可定制的功能,如:在本地上传图片到oss,减少服务器的带宽压力,下面就以此为例。示例图:  一。models.py#video可以直接用字符串存储,因为最终里面只有有一串oss的视频路径classNews(models.Model):OSS_URL='https://xxxx......
  • Django 中使用ModelForm生成HTML标签
    在Django中,使用ModelForm来生成HTML表单标签是一种常见且高效的做法。ModelForm可以自动根据模型的字段生成对应的表单字段,这大大简化了表单的创建和处理过程。以下是如何在Django中使用ModelForm来生成HTML标签的基本步骤:步骤1:创建ModelForm首先,你需要为你的模型......
  • 06django
    神奇的双下划线查询#1.查询年龄大于20的用户#res=models.User.objects.filter(age__gt=20)#print(res)"""__gt大于__lt小于__gte大于等于__lte小于等于"""#2.查询年龄是18、22、25的用户#res=models.......
  • tcp连接全过程各种状态详解
    // from netinet/tcp.henum{  TCP_ESTABLISHED = 1, // 代表一个打开的连接  TCP_SYN_SENT, // 再发送连接请求后等待匹配的连接请求(客户端)  TCP_SYN_RECV, // 再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)  TCP_FIN_WAIT1, // 等待......
  • DBeaver连接SqlServer报“The server selected protocol version TLS10 is not accept
    1、......
  • iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
    ​在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用XcodeConsole等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。克魔......
  • MySQL数据库连接报错1130 - Host 'xxx' is not allowed to connect to this MySQL ser
    目录现象描述原因分析解决办法:本文解决MySQL数据库连接报错1130-Host'xxx'isnotallowedtoconnecttothisMySQLserver。返回目录返回目录现象描述MySQL数据库,使用Navicat、root用户连接报错:原因分析这个报错原因是权限问题,需要修改连接权限。进入mysql......
  • 事务未提交和连接未关闭
    事务未提交和连接未关闭背景最近一个项目出现了应用服务器无法登录的现象.出现现象后,给出了jstack和应用的log等信息.jstack里面所有的http的nio线程都在parked状态.然后log里面出现了大量的获取不到链接的提示.所以第一反应是因为事务未提交导致的连接池泄露.但是......