使用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:[email protected]: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的一些后续了解再总结一下再记录了。

 

你可能感兴趣的:(sql)