亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? firebird.py

?? SQLAlchemy. 經典的Python ORM框架。學習必看。
?? PY
?? 第 1 頁 / 共 2 頁
字號:
# firebird.py# Copyright (C) 2005, 2006, 2007, 2008 Michael Bayer mike_mp@zzzcomputing.com## This module is part of SQLAlchemy and is released under# the MIT License: http://www.opensource.org/licenses/mit-license.php"""Firebird backend================This module implements the Firebird backend, thru the kinterbasdb_DBAPI module.Firebird dialects-----------------Firebird offers two distinct dialects_ (not to be confused with theSA ``Dialect`` thing):dialect 1  This is the old syntax and behaviour, inherited from Interbase pre-6.0.dialect 3  This is the newer and supported syntax, introduced in Interbase 6.0.From the user point of view, the biggest change is in date/timehandling: under dialect 1, there's a single kind of field, ``DATE``with a synonim ``DATETIME``, that holds a `timestamp` value, that is adate with hour, minute, second. Under dialect 3 there are three kinds,a ``DATE`` that holds a date, a ``TIME`` that holds a *time of theday* value and a ``TIMESTAMP``, equivalent to the old ``DATE``.The problem is that the dialect of a Firebird database is a propertyof the database itself [#]_ (that is, any single database has beencreated with one dialect or the other: there is no way to change theafter creation). SQLAlchemy has a single instance of the class thatcontrols all the connections to a particular kind of database, so itcannot easily differentiate between the two modes, and in particularit **cannot** simultaneously talk with two distinct Firebird databaseswith different dialects.By default this module is biased toward dialect 3, but you can easilytweak it to handle dialect 1 if needed::  from sqlalchemy import types as sqltypes  from sqlalchemy.databases.firebird import FBDate, colspecs, ischema_names  # Adjust the mapping of the timestamp kind  ischema_names['TIMESTAMP'] = FBDate  colspecs[sqltypes.DateTime] = FBDate,Other aspects may be version-specific. You can use the ``server_version_info()`` methodon the ``FBDialect`` class to do whatever is needed::  from sqlalchemy.databases.firebird import FBCompiler  if engine.dialect.server_version_info(connection) < (2,0):      # Change the name of the function ``length`` to use the UDF version      # instead of ``char_length``      FBCompiler.LENGTH_FUNCTION_NAME = 'strlen'Pooling connections-------------------The default strategy used by SQLAlchemy to pool the database connectionsin particular cases may raise an ``OperationalError`` with a message`"object XYZ is in use"`. This happens on Firebird when there are twoconnections to the database, one is using, or has used, a particular tableand the other tries to drop or alter the same table. To garantee DDLoperations success Firebird recommend doing them as the single connected user.In case your SA application effectively needs to do DDL operations while otherconnections are active, the following setting may alleviate the problem::  from sqlalchemy import pool  from sqlalchemy.databases.firebird import dialect  # Force SA to use a single connection per thread  dialect.poolclass = pool.SingletonThreadPool.. [#] Well, that is not the whole story, as the client may still ask       a different (lower) dialect..... _dialects: http://mc-computing.com/Databases/Firebird/SQL_Dialect.html.. _kinterbasdb: http://sourceforge.net/projects/kinterbasdb"""import datetimefrom sqlalchemy import exceptions, schema, types as sqltypes, sql, utilfrom sqlalchemy.engine import base, default_initialized_kb = Falseclass FBNumeric(sqltypes.Numeric):    """Handle ``NUMERIC(precision,length)`` datatype."""    def get_col_spec(self):        if self.precision is None:            return "NUMERIC"        else:            return "NUMERIC(%(precision)s, %(length)s)" % { 'precision': self.precision,                                                            'length' : self.length }    def bind_processor(self, dialect):        return None    def result_processor(self, dialect):        if self.asdecimal:            return None        else:            def process(value):                if isinstance(value, util.decimal_type):                    return float(value)                else:                    return value            return processclass FBFloat(sqltypes.Float):    """Handle ``FLOAT(precision)`` datatype."""    def get_col_spec(self):        if not self.precision:            return "FLOAT"        else:            return "FLOAT(%(precision)s)" % {'precision': self.precision}class FBInteger(sqltypes.Integer):    """Handle ``INTEGER`` datatype."""    def get_col_spec(self):        return "INTEGER"class FBSmallInteger(sqltypes.Smallinteger):    """Handle ``SMALLINT`` datatype."""    def get_col_spec(self):        return "SMALLINT"class FBDateTime(sqltypes.DateTime):    """Handle ``TIMESTAMP`` datatype."""    def get_col_spec(self):        return "TIMESTAMP"    def bind_processor(self, dialect):        def process(value):            if value is None or isinstance(value, datetime.datetime):                return value            else:                return datetime.datetime(year=value.year,                                         month=value.month,                                         day=value.day)        return processclass FBDate(sqltypes.DateTime):    """Handle ``DATE`` datatype."""    def get_col_spec(self):        return "DATE"class FBTime(sqltypes.Time):    """Handle ``TIME`` datatype."""    def get_col_spec(self):        return "TIME"class FBText(sqltypes.Text):    """Handle ``BLOB SUB_TYPE 1`` datatype (aka *textual* blob)."""    def get_col_spec(self):        return "BLOB SUB_TYPE 1"class FBString(sqltypes.String):    """Handle ``VARCHAR(length)`` datatype."""    def get_col_spec(self):        return "VARCHAR(%(length)s)" % {'length' : self.length}class FBChar(sqltypes.CHAR):    """Handle ``CHAR(length)`` datatype."""    def get_col_spec(self):        return "CHAR(%(length)s)" % {'length' : self.length}class FBBinary(sqltypes.Binary):    """Handle ``BLOB SUB_TYPE 0`` datatype (aka *binary* blob)."""    def get_col_spec(self):        return "BLOB SUB_TYPE 0"class FBBoolean(sqltypes.Boolean):    """Handle boolean values as a ``SMALLINT`` datatype."""    def get_col_spec(self):        return "SMALLINT"colspecs = {    sqltypes.Integer : FBInteger,    sqltypes.Smallinteger : FBSmallInteger,    sqltypes.Numeric : FBNumeric,    sqltypes.Float : FBFloat,    sqltypes.DateTime : FBDateTime,    sqltypes.Date : FBDate,    sqltypes.Time : FBTime,    sqltypes.String : FBString,    sqltypes.Binary : FBBinary,    sqltypes.Boolean : FBBoolean,    sqltypes.Text : FBText,    sqltypes.CHAR: FBChar,}ischema_names = {      'SHORT': lambda r: FBSmallInteger(),       'LONG': lambda r: FBInteger(),       'QUAD': lambda r: FBFloat(),      'FLOAT': lambda r: FBFloat(),       'DATE': lambda r: FBDate(),       'TIME': lambda r: FBTime(),       'TEXT': lambda r: FBString(r['flen']),      'INT64': lambda r: FBNumeric(precision=r['fprec'], length=r['fscale'] * -1), # This generically handles NUMERIC()     'DOUBLE': lambda r: FBFloat(),  'TIMESTAMP': lambda r: FBDateTime(),    'VARYING': lambda r: FBString(r['flen']),    'CSTRING': lambda r: FBChar(r['flen']),       'BLOB': lambda r: r['stype']==1 and FBText() or FBBinary()      }def descriptor():    return {'name':'firebird',    'description':'Firebird',    'arguments':[        ('host', 'Host Server Name', None),        ('database', 'Database Name', None),        ('user', 'Username', None),        ('password', 'Password', None)    ]}class FBExecutionContext(default.DefaultExecutionContext):    passclass FBDialect(default.DefaultDialect):    """Firebird dialect"""    supports_sane_rowcount = False    supports_sane_multi_rowcount = False    max_identifier_length = 31    preexecute_pk_sequences = True    supports_pk_autoincrement = False    def __init__(self, type_conv=200, concurrency_level=1, **kwargs):        default.DefaultDialect.__init__(self, **kwargs)        self.type_conv = type_conv        self.concurrency_level= concurrency_level    def dbapi(cls):        import kinterbasdb        return kinterbasdb    dbapi = classmethod(dbapi)    def create_connect_args(self, url):        opts = url.translate_connect_args(username='user')        if opts.get('port'):            opts['host'] = "%s/%s" % (opts['host'], opts['port'])            del opts['port']        opts.update(url.query)        type_conv = opts.pop('type_conv', self.type_conv)        concurrency_level = opts.pop('concurrency_level', self.concurrency_level)        global _initialized_kb        if not _initialized_kb and self.dbapi is not None:            _initialized_kb = True            self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level)        return ([], opts)    def create_execution_context(self, *args, **kwargs):        return FBExecutionContext(self, *args, **kwargs)    def type_descriptor(self, typeobj):        return sqltypes.adapt_type(typeobj, colspecs)    def server_version_info(self, connection):        """Get the version of the Firebird server used by a connection.        Returns a tuple of (`major`, `minor`, `build`), three integers        representing the version of the attached server.        """        # This is the simpler approach (the other uses the services api),        # that for backward compatibility reasons returns a string like        #   LI-V6.3.3.12981 Firebird 2.0        # where the first version is a fake one resembling the old        # Interbase signature. This is more than enough for our purposes,        # as this is mainly (only?) used by the testsuite.        from re import match        fbconn = connection.connection.connection        version = fbconn.server_version        m = match('\w+-V(\d+)\.(\d+)\.(\d+)\.(\d+) \w+ (\d+)\.(\d+)', version)        if not m:            raise exceptions.AssertionError("Could not determine version from string '%s'" % version)        return tuple([int(x) for x in m.group(5, 6, 4)])    def _normalize_name(self, name):        """Convert the name to lowercase if it is possible"""        # Remove trailing spaces: FB uses a CHAR() type,        # that is padded with spaces        name = name and name.rstrip()        if name is None:            return None        elif name.upper() == name and not self.identifier_preparer._requires_quotes(name.lower()):            return name.lower()        else:            return name    def _denormalize_name(self, name):        """Revert a *normalized* name to its uppercase equivalent"""        if name is None:            return None        elif name.lower() == name and not self.identifier_preparer._requires_quotes(name.lower()):            return name.upper()        else:            return name    def table_names(self, connection, schema):        """Return a list of *normalized* table names omitting system relations."""        s = """        SELECT r.rdb$relation_name        FROM rdb$relations r        WHERE r.rdb$system_flag=0        """

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久久久| 黄网站免费久久| av在线播放一区二区三区| 欧美色倩网站大全免费| 国产精品第五页| 成人国产在线观看| 亚洲欧美在线另类| gogogo免费视频观看亚洲一| 精品欧美一区二区久久| 久久激情综合网| 久久综合中文字幕| 国产一二精品视频| 日韩欧美www| 久久超碰97中文字幕| 精品久久久三级丝袜| 亚洲永久精品大片| 国产成人亚洲精品青草天美| 日韩亚洲欧美一区| 久久精品国产99| 国产无人区一区二区三区| 国产精品1区二区.| 国产精品美女久久久久av爽李琼| 成人黄色综合网站| 亚洲激情第一区| 9191久久久久久久久久久| 日本视频一区二区| 欧美一区日韩一区| 蜜臀av亚洲一区中文字幕| 精品国产123| 白白色亚洲国产精品| 亚洲精品日韩综合观看成人91| 欧美色图一区二区三区| 午夜一区二区三区在线观看| 日韩一区二区三区免费观看| 国产一区二区h| 亚洲精品国产视频| 日韩三级视频在线观看| 国产91清纯白嫩初高中在线观看| 日本一区二区视频在线观看| 精品综合免费视频观看| 日本一区二区电影| 欧美色国产精品| 国产精品一二三在| 有坂深雪av一区二区精品| 欧美精品一二三| 国产另类ts人妖一区二区| 亚洲女同ⅹxx女同tv| 日韩欧美第一区| 一本一道综合狠狠老| 美女免费视频一区二区| 亚洲精品中文在线| 精品欧美久久久| 成人高清视频免费观看| 日韩av在线播放中文字幕| 免费不卡在线视频| 成人一区二区三区视频| 在线精品视频免费播放| 欧美电影免费观看高清完整版在线 | 91色乱码一区二区三区| 舔着乳尖日韩一区| 国产精品高潮呻吟久久| 91麻豆精品国产自产在线观看一区 | 91蝌蚪porny| 黄页视频在线91| 午夜精品久久久久久久久久久| 国产精品色一区二区三区| 日韩视频一区在线观看| 色综合久久综合网97色综合| 九九国产精品视频| 亚洲影视资源网| 亚洲成人精品在线观看| 久久精品在线观看| 欧美性做爰猛烈叫床潮| 91网页版在线| 久久9热精品视频| 亚洲国产成人porn| 欧美大胆一级视频| 91福利视频在线| 成人精品视频一区二区三区尤物| 午夜精品视频一区| 亚洲人妖av一区二区| 久久蜜臀精品av| 日韩精品在线一区二区| 欧美日韩成人综合| 一本高清dvd不卡在线观看| 不卡的av电影| 国产一区二区伦理| 日韩av不卡在线观看| 亚洲成人动漫精品| 亚洲综合在线观看视频| 亚洲欧美日韩久久精品| 亚洲色图欧美在线| 国产精品入口麻豆九色| 久久免费电影网| 国产欧美精品一区二区色综合朱莉| 欧美电视剧免费全集观看| 欧美精品一二三四| 欧美一区二区三区免费观看视频| 欧美日韩在线一区二区| 欧美日韩在线播放| 欧美人xxxx| 欧美色网一区二区| 日本韩国欧美在线| 亚洲国产成人一区二区三区| 日本久久精品电影| 亚洲国产精品成人综合色在线婷婷| 日韩欧美在线1卡| 日韩视频免费观看高清完整版| 777午夜精品视频在线播放| 欧美日高清视频| 日韩女优视频免费观看| 精品成人一区二区三区四区| 久久久一区二区三区捆绑**| 国产午夜精品一区二区三区四区 | 粉嫩在线一区二区三区视频| 国产精品456露脸| 99re这里只有精品首页| 91片在线免费观看| 欧美日韩高清一区二区不卡| 欧美成人video| 日韩无一区二区| 久久久电影一区二区三区| 中文字幕在线一区免费| 亚洲激情六月丁香| 热久久免费视频| 丁香五精品蜜臀久久久久99网站| a美女胸又www黄视频久久| 成人app软件下载大全免费| 色婷婷av久久久久久久| 欧美日韩在线不卡| 欧美一区二区成人6969| 欧美一级生活片| 国产欧美日韩卡一| 亚洲一区在线观看网站| 久久99国产精品尤物| 91亚洲国产成人精品一区二三| 欧美日韩免费电影| 精品处破学生在线二十三| 亚洲欧洲韩国日本视频| 麻豆免费精品视频| 日本韩国欧美在线| 精品国产一区二区三区四区四| 久久久99久久| 亚洲欧美日韩国产成人精品影院| 视频一区视频二区中文| 成人app在线观看| 欧美性色黄大片手机版| 中文在线资源观看网站视频免费不卡 | 欧美日韩精品免费| 国产午夜精品久久久久久免费视 | 欧美视频一区在线观看| 久久先锋影音av| 午夜电影网亚洲视频| 成av人片一区二区| 日韩午夜在线影院| 亚洲人成网站影音先锋播放| 亚洲制服丝袜一区| 日韩一区二区免费在线观看| 欧美国产日韩亚洲一区| 精品视频在线免费看| 一区二区三区中文免费| 日韩一区二区视频| 麻豆精品视频在线观看免费| 欧美日韩激情一区二区| 成人免费视频一区| 国产精品天天摸av网| 白白色 亚洲乱淫| 精品一区二区三区在线播放| 91麻豆国产在线观看| 欧美激情在线看| 福利电影一区二区| 国产无一区二区| av成人免费在线| 国产精品福利影院| 99精品桃花视频在线观看| 国产精品萝li| www.在线欧美| 欧美精品精品一区| 精品视频在线视频| 亚洲欧美日韩精品久久久久| 成人在线综合网| 亚洲人成电影网站色mp4| 欧洲精品视频在线观看| 亚洲一区二区三区在线看| 欧美午夜精品免费| 日韩在线观看一区二区| 精品美女在线观看| 成人午夜在线播放| 夜夜揉揉日日人人青青一国产精品| 欧美日韩一区二区在线视频| 久久国产精品露脸对白| 国产三级精品三级在线专区| 91免费版在线看| 免费精品视频在线| 亚洲 欧美综合在线网络| 日韩三级在线观看| av一二三不卡影片| 日韩精品一二三四| 国产日韩欧美制服另类| 色哟哟一区二区在线观看|