GBase 8s
适配迁移
文章
精选

python3.5 + django2.1.5+ django-gbasedbtdb1.7.0 粗暴适配

发表于2025-11-06 15:24:4172次浏览1个评论

# 官方文档

https://pypi.org/project/django-gbasedbtdb/#description

https://files.pythonhosted.org/packages/54/52/1b846d35e46d4d0c4dc88295216143aa30df98e581fb5e4c9a2347b4c7c6/django_gbasedbtdb-1.7.0.tar.gz

https://www.gbase.cn/community/post/199

 

 1.7.0版本支持django2.1?

需要交叉编译只下载源码即可,单独编译pyodbc

不交叉编译pip安装即可

# django安装

pip install django-gbasedbtdb==1.7.0
pip install Django==2.1.5

# 初始化project , app

export PYTHON_HOME=./python3/bin
export PYTHONPATH=/opt/django_gbase8s/lib/python3.5/site-packages/


$PYTHON_HOME/django-admin startproject gbase8s

$PYTHON_HOME/django-admin startapp mytest

# 配置

修改settings.py


DATABASES = {
   'default': {
       'ENGINE': 'django_gbasedbtdb',
       'NAME': 'test',  # database name
       'SERVER': '127.0.0.1,9088',  # host,port
       'USER': 'gbasedbt',    # user
       'PASSWORD': 'Gbase@123',  # passowrd
       'SERVERNAME': 'gbase01',   # gbase8s instance
       'CLIENT_LOCALE': 'zh_CN.utf8',
       'DB_LOCALE': 'zh_CN.utf8',
       'AUTOCOMMIT': True,
       'OPTIONS': {
           'DRIVER': '/opt/gbase8s/lib/cli/iclit09b.so',
           'CPTIMEOUT': 120,
           'CONN_TIMEOUT': 120,
           'ISOLATION_LEVEL': 'READ_COMMITED',
           'LOCK_MODE_WAIT': 0,
           'VALIDATE_CONNECTION': True,
       },
       'CONNECTION_RETRY': {
           'MAX_ATTEMPTS': 10,
       },
       'TEST': {
           'NAME': 'test',
           'CREATE_DB': False
       }
   }
}

ALLOWED_HOSTS = ['*']

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'


在 settings.pys 文件中的 INSTALLED_APPS 中增加mytest


INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'mytest',
]
 

# model定义

在mytest/models.py中增加


class Book(models.Model):
   id = models.AutoField(primary_key=True)         
   title = models.CharField(max_length=32)         
   price = models.DecimalField(max_digits=5, decimal_places=2)  
   publish = models.CharField(max_length=32)       
 

# 创建库,表


dbaccess - -

Database selected.

> create database test with log;

Database closed.


Database created.

Elapsed time: 1.204 sec

> exit;

Database closed.

 


# 设置环境变量

export PYTHONPATH=/opt/django_gbase8s/lib/python3.5/site-packages/
export GBASEDBTDIR=/opt/gbase8s
export GBASEDBTSQLHOSTS=$GBASEDBTDIR/etc/sqlhosts.odbc
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

# django操作

python3.5 manage.py migrate

报错信息:

CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON auth_group_permissions (group_id)
Traceback (most recent call last):
 File "/opt/django_gbase8s/lib/python3.5/site-packages/django/db/backends/utils.py", line 85, in _execute
   return self.cursor.execute(sql, params)
 File "/opt/django_gbase8s/lib/python3.5/site-packages/django_gbasedbtdb/base.py", line 458, in execute
   return self.cursor.execute(sql, params)
pyodbc.Error: ('HY000', '[HY000] [GBasedbt][GBasedbt ODBC Driver][GBasedbt]Unspecified System Error =  -350. (-350) (SQLExecDirectW)')

 

 修改源码跳过创建索引 ,django_gbasedbtdb/base.py line 456


重新执行:

python3.5 manage.py migrate
Operations to perform:
 Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
 Applying contenttypes.0001_initial... OK
 Applying auth.0001_initial... OK
 Applying admin.0001_initial... OK
 Applying admin.0002_logentry_remove_auto_add... OK
 Applying admin.0003_logentry_add_action_flag_choices... OK
 Applying contenttypes.0002_remove_content_type_name... OK
 Applying auth.0002_alter_permission_name_max_length... OK
 Applying auth.0003_alter_user_email_max_length... OK
 Applying auth.0004_alter_user_username_opts... OK
 Applying auth.0005_alter_user_last_login_null... OK
 Applying auth.0006_require_contenttypes_0002... OK
 Applying auth.0007_alter_validators_add_error_messages... OK
 Applying auth.0008_alter_user_username_max_length... OK
 Applying auth.0009_alter_user_last_name_max_length... OK
 Applying sessions.0001_initial... OK

python3.5 manage.py makemigrations mytest


python3.5 manage.py migrate mytest

# 最后

评论

登录后才可以发表评论
崔哥发表于 6个月前
兔园标物序,惊时最是梅。衔霜当路发,映雪拟寒开。枝横却月观,花绕凌风台。朝洒长门泣,夕驻临邛杯。应知早飘落,故逐上春来。