Gbase8t/s Python 连接数据库方法及增删改查操作示例

源自官方提供提供文档,侵删。

8s和8t架构相同,方法相同,以下方法我并没有实测过,谨慎使用。


目录

windows平台python链接GBase8t数据库

linux平台python使用pyodbc链接GBase8t

1)、Linux下GBase的ODBC配置

2)、验证GBase ODBC配置

3)、python链接GBase8t

python使用informixdb链接GBase8t


windows平台python链接GBase8t数据库

环境:

1)、安装GBase8t CSDK.

2)、配置ODBC

3)、安装python3.5 windows版

示例代码:

E:\share>python

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AM

D64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import pyodbc

>>> cnxn = pyodbc.connect('DSN=gbaseserver2');

>>> cur = cnxn.cursor();

>>> cur.execute("select id,name from t");

<pyodbc.Cursor object at 0x0000000000C08D50>

>>> rows = cur.fetchall();

>>> print(rows);

[(1, 'name1'), (2, 'name2'), (3, 'name3')]

>>> print (rows[0].name);

name1

>>>

 

linux平台python使用pyodbc链接GBase8t

环境:

         1)、安装unixODBC;

         2)、配置odbc。

         3)、安装python2.7

         4)、安装pyodbc3.0.6

1)、Linux下GBase的ODBC配置

linux 操作系统下需要安装unixODBC 或iODBC 来使用GBase 8s ODBC 驱动。推荐使用unixODBC 驱动管理器。unixODBC 的安装包一般与GBase 8s ODBC 的安装一同提供。您可以到unixODBC 官方网站下载。

首先进入系统盘目录,例如"/media/RHEL-6.6 Server.x86_64/Packages",安装下面这两个安装包。

(1)unixODBC-2.2.14-1.x86_64.rpm:unixODBC的数据源管理器

(2)unixODBC-devel-2.2.14-1.x86_64.rpm:unixODBC的开发包

安装成功后您可以通过如下命令查看unixODBC 的安装信息:

odbc配置文件

vi /etc/odbcinst.ini

注意:【】内数据库名必须与Description后的数据库名保持一致。

#GBase

[GBase]

Description     = ODBC for GBase

Driver          = /opt/gbase/lib/cli/iclit09b.so

Setup           = /opt/gbase/lib/cli/iclit09b.so

Driver64        = /opt/gbase/lib/cli/iclit09b.so

Setup64         = /opt/gbase/lib/cli/iclit09b.so

FileUsage       = 1

 

vi /etc/odbc.ini 

[test]

Driver   =/opt/gbase/lib/cli/iclit09b.so

SERVER   =gbaseserver2

UID      =informix

PWD      =informix

DATABASE         =db_utf8

PORT     =9488

CHARSET =UTF8

 

在环境变量文件下添加以下参数并执行source命令使其生效。

export LD_LIBRARY_PATH=${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql:${INFORMIXDIR}/lib/cli

export ODBCINI=/etc/odbc.ini

 

到此Linux下GBase ODBC已经配置完成,我们可以通过isql来验证ODBC是否配置成功。

2)、验证GBase ODBC配置

         我们通过isql来验证ODBC是否配置成功。如下图。

        

3)、python链接GBase8t

通过以上这个简单的示例,我们即可通过pyodbc对GBase 8s进行访问和交互。

下面简单列出了pyodbc的常用方法和简单使用。

(1)、python数据查询

所有的SQL语句都用cursor.execute函数运行。如果语句返回行,比如一个查询语句返回的行,你可以通过游标的fetch函数来获取数据,这些函数有(fetchone,fetchall,fetchmany).如果返回空行,fetchone函数将返回None,而fetchall和fetchmany将返回一个空列。

ODBC支持在SQL语句中使用一个问号来作为参数。你可以在SQL语句后面加上值,用来传递给SQL语句中的问号,例如:

cursor.execute("""

               select user_id, user_name

                 from users

                where last_logon < ?

                  and bill_overdue = ?

""", '2001-01-01', 'y')

 

(2)、数据插入

数据插入,把SQL插入语句传递给cursor的execute函数,可以伴随任何需要的参数。必须调用commit函数,否者你对数据库的所有操作将会失效。当断开连接时,所有悬挂的修改将会被重置。例如:

cursor.execute("insert into products(id, name) values ('pyodbc', 'awesome library')")

cnxn.commit()


cur.execute("insert into t values(5,?)",'测试')

cnxn.commit()

 

(3)、 数据修改和删除

数据修改和删除也是跟上面的操作一样,把SQL语句传递给execute函数。但是我们常常想知道数据修改和删除时,到底影响了多少条记录,这个时候你可以使用cursor.rowcount的返回值。例如:

cursor.execute("delete from products where id <> ?", 'pyodbc')

print cursor.rowcount, 'products deleted'

cnxn.commit()

 

(4)、常见问题

(4.1)、中文乱码

通过python对数据库进行中文插入,出现中文乱码问题。

通过设置ODBC的DSN字符集即可解决。

先查看数据库字符集设置情况:

sqlcli> show variables like '%char%';

+--------------------------+------------------------------------+

| Variable_name            | Value                              |

+--------------------------+------------------------------------+

| character_set_client     | utf8                               | --客户端字符集

| character_set_connection | utf8                               |

| character_set_database   | utf8                               | --数据库字符集

| character_set_filesystem | binary                             |

| character_set_results    | utf8                               |

| character_set_server     | utf8                               | --服务器字符集

| character_set_system     | utf8                               |

| character_sets_dir       | /opt/GBase/Server/global/charsets/ |

+--------------------------+------------------------------------+

8 rows in set (0.16 sec)

 

结合数据库字符集情况设置ODBC字符集:

vi /etc/odbc.ini 

 

[test]

Driver          = /opt/GBase/ODBC/libgsodbc8.so

SERVER          = 192.168.79.11

UID             = sysdba

PWD             = 1

DATABASE                = test

PORT            = 5258

CHARSET  = UTF8

修改保存后需要重启数据库服务才能生效设置。

python使用informixdb链接GBase8t

环境:

         1)、安装python2.7

         2)、安装informixdb

                  informixdb下载地址:http://informixdb.sourceforge.net/

                  tar –xvf InformixDB-2.5.tar

                  cd InformixDB-2.5

                  python setup.py build_ext

                  python setup.py install

 

示例代码:

#!/usr/bin/python


import sys

import informixdb  # import the InformixDB module


# ------------------------------------

# open connection to database 'stores'

# ------------------------------------

conn = informixdb.connect("stores")


# ----------------------------------

# allocate cursor and execute select

# ----------------------------------

cursor1 = conn.cursor(rowformat = informixdb.ROW_AS_DICT)

cursor1.execute('select code, sname from state')


# --------------------------

# prepare 'delete' statement

# --------------------------

cursor2 = conn.cursor()


# ---------------------

# fetch thru result set

# ---------------------

for row in cursor1:


    # -------------------------------------------

    # delete row if column 'code' begins with 'C'

    # -------------------------------------------

    if row['code'][0] == 'C':

        cursor2.execute('delete from state where code = ?', (row['code'],))

        print "DELETED: %-2s %-15s" % (row['code'], row['sname'])

        continue


   # --------

   # show row

   # --------

   print "%-2s %-15s" % (row['code'], row['sname'])



# ---------------------------------------

# commit transaction and close connection

# ---------------------------------------

conn.commit()

conn.close()


sys.exit(0);


 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值