zoukankan      html  css  js  c++  java
  • 使用SQLAlchemy对Firebird数据库进行操作

         来这个公司已经一周了,度过了开始的无聊日子准备正式准备做点东西了,这几天接触了一下文件数据库InterBase,尝试在Ubuntu上连接其开源版本Firebird,因为公司使用的是SQLAlchemy,所以例子我也就用Python演示了。

         #安装firebird数据库

    sudo apt-get install firebird-super

      2,更改firebird中数据库管理员SYSDBA的密码:

    sudo dpkg-reconfigure firebird2.5-super

    3,使用gsec命令检测安装成功:

    gsec -user sysdba -password masterkey

    如果能进入则说明Firebird安装成功

    4,使用isql-fb来新建数据库:

    isql-fb
    SQL> CREATE DATABASE '/tmp/db_name.gdb' USER 'sysdba' PASSWORD 'masterkey'

    5,安装firebird数据库的图形界面FlameRobin

    6,python使用sqlalchemy框架连接数据库:使用中要安装fdb-1.4.1.tar库

    from sqlalchemy.orm import mapper, sessionmaker
    from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
    from sqlalchemy.sql.expression import Cast
    from sqlalchemy.ext.compiler import compiles
    from sqlalchemy.dialects.mysql import 
            BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE, 
            DATETIME, DECIMAL, DECIMAL, DOUBLE, ENUM, FLOAT, INTEGER, 
            LONGBLOB, LONGTEXT, MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, NCHAR, 
            NUMERIC, NVARCHAR, REAL, SET, SMALLINT, TEXT, TIME, TIMESTAMP, 
            TINYBLOB, TINYINT, TINYTEXT, VARBINARY, VARCHAR, YEAR
    import sqlalchemy as sa 
    #以上是导包
    
    metadata = MetaData()
    userTable = Table(
        "jonny_user",metadata,
        Column('user_id', Integer, primary_key=True),
        Column('user_name', VARCHAR(50), unique=True, nullable=False),
        Column('password', VARCHAR(40), nullable=True)
    )
    #下面这个数据库是连接MySQL数据库的语句
    #mysql_db = create_engine('mysql://root:xxxxxxxxx@127.0.0.1:3306/jonny')
    
    #以下这句是连接Firebird数据库的语句,数据库的默认账号是‘sysdba’默认密码是‘masterkey’
    dburl=sa.engine.url.URL('firebird',username='sysdba',password='masterkey',database='/tmp/firstdb3.gdb')  
    mysql_db=sa.create_engine(dburl,encoding='gb2312',echo=False) 
    
    metadata.create_all(mysql_db)
    #建立User类
    class User(object):
          pass
    
    #关联类与表
    mapper(User, userTable)
    
    #取得session
    Session = sessionmaker()
    Session.configure(bind=mysql_db)
    session = Session()
    
    #主函数
    def main():
        inputTypef = raw_input("inputType:")
        if inputTypef == 'insert':
           insert()
        elif inputTypef == 'find':
           find()
        elif inputTypef == 'delete':
           delete()
        else:
           print 'Error'
    #查找方法
    def find():
        print 'name'
        name = raw_input("name:")
        for instance in (session.query(User).filter_by(user_name=name).all()):
         print instance.user_name, instance.password
    #删除方法
    def delete():
        print 'name'
        name = raw_input("name:")
        (session.query(User).filter_by(user_name=name).delete())
        session.flush()
        session.commit()
        print 'deleteSucceed'
    #插入方法
    def insert():
        u = User()
        u.user_id = raw_input("id:")
        print 'name'
        u.user_name = raw_input("name:")
        print 'password'
        u.password = raw_input("password:")
        session.add(u)
        session.flush()
        session.commit()    
        session.close()
    
    if __name__ == '__main__':
       main()

    用上面的例子来演示一下对于Firebird数据库的一个简单的增删改查功能,先这样记录下来,对于InterBase及Firebird的一些后续了解再总结一下再记录了。

  • 相关阅读:
    HttpClient入门三
    Centos常用命令之:压缩与解压缩
    Centos常用命令之:搜索
    Centos常用命令之:ln
    Centos常用命令之:VI
    HttpClient入门二
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(二维向量)UF_VEC2_is_equal
    NX二次开发-UFUN确定两个向量在指定的公差内是否相等(三维向量)UF_VEC3_is_equal
    NX二次开发-NXOPEN C#UF创建块theUfSession.Modl.CreateBlock1
    NX二次开发-NXOpen C# UF函数例子目录【更新日期2020.7.21】
  • 原文地址:https://www.cnblogs.com/fuhuixiang/p/4088381.html
Copyright © 2011-2022 走看看