亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
春色校园综合激情亚洲| 欧美视频在线观看一区二区| 不卡电影一区二区三区| 欧美一区二区视频网站| 国产精品视频观看| 激情亚洲综合在线| 欧美性猛片xxxx免费看久爱| 欧美精品一区二区三区四区 | 久久综合九色综合97_久久久| 亚洲欧洲在线观看av| 精品一区二区三区在线观看 | 樱花草国产18久久久久| 国内久久精品视频| 在线欧美一区二区| 亚洲国产精品成人综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 色综合一个色综合亚洲| 欧美国产乱子伦 | 亚洲mv大片欧洲mv大片精品| av网站免费线看精品| 2021中文字幕一区亚洲| 亚洲国产va精品久久久不卡综合| 国产成人精品亚洲日本在线桃色 | 一区二区三区在线免费视频| 成人综合婷婷国产精品久久| 日韩欧美一区中文| 日韩电影在线免费观看| 在线观看不卡视频| 综合激情成人伊人| 成人美女在线观看| 中文文精品字幕一区二区| 激情五月激情综合网| 精品国产3级a| 国产真实乱偷精品视频免| 制服.丝袜.亚洲.中文.综合| 亚洲国产另类av| 欧美日韩三级视频| 三级欧美在线一区| 欧美日韩精品免费观看视频| 午夜a成v人精品| 韩日av一区二区| |精品福利一区二区三区| 一区二区三区中文字幕精品精品 | 视频一区中文字幕| 精品处破学生在线二十三| 欧美高清一级片在线| 欧美在线短视频| 亚洲国产精品国自产拍av| 国产成人在线免费| 日韩欧美一级片| 免费成人av资源网| 日韩午夜激情免费电影| 精品亚洲国产成人av制服丝袜| 精品久久久久香蕉网| 国产suv精品一区二区三区| 国产精品入口麻豆九色| 成人黄色片在线观看| 亚洲在线视频网站| 欧美一区二区三区视频免费播放| 日本中文在线一区| 久久久亚洲精品石原莉奈| 暴力调教一区二区三区| 亚洲一区二区美女| 日韩美女主播在线视频一区二区三区| 久久福利视频一区二区| 国产无人区一区二区三区| 一本久道久久综合中文字幕| 日韩精品91亚洲二区在线观看| 884aa四虎影成人精品一区| 国产美女精品在线| 亚洲精品日韩专区silk| 日韩一区二区免费在线电影| 国产成人精品亚洲午夜麻豆| 一区二区三区四区激情| 欧美刺激午夜性久久久久久久| 成人永久aaa| 日韩1区2区日韩1区2区| 中文字幕精品一区| 欧美理论在线播放| 高清av一区二区| 最新久久zyz资源站| 91影视在线播放| 欧美激情一区三区| 日韩一区二区在线免费观看| 久久久亚洲欧洲日产国码αv| 亚洲国产va精品久久久不卡综合| 欧美三级资源在线| 亚洲日韩欧美一区二区在线| 首页国产欧美日韩丝袜| 在线欧美一区二区| 午夜视频一区在线观看| 国产精品丝袜久久久久久app| 三级亚洲高清视频| 欧美二区在线观看| 不卡一二三区首页| 六月婷婷色综合| 亚洲国产一区二区三区| 中文字幕 久热精品 视频在线 | www.日本不卡| 国产在线精品一区二区不卡了 | 亚洲男人天堂av网| 国产日韩欧美麻豆| 26uuu亚洲综合色欧美| 717成人午夜免费福利电影| 欧美系列日韩一区| 色婷婷av一区二区三区gif| voyeur盗摄精品| 国产.欧美.日韩| 国产91精品免费| 国产一区二区三区在线观看免费视频 | 88在线观看91蜜桃国自产| 91欧美一区二区| 99热99精品| 顶级嫩模精品视频在线看| 国产精品综合久久| 国产一区二区三区精品欧美日韩一区二区三区| 日韩激情中文字幕| 亚洲成av人片观看| 午夜a成v人精品| 视频一区二区中文字幕| 天天色天天爱天天射综合| 天天影视网天天综合色在线播放| 亚洲va欧美va人人爽| 天天综合日日夜夜精品| 日本女人一区二区三区| 久久精品免费看| 精品一区二区三区在线视频| 国产传媒久久文化传媒| 91亚洲精品乱码久久久久久蜜桃 | 国产乱国产乱300精品| 国产一区二区三区四| 国产精品99久久久久久久vr| 国产成人av一区二区三区在线观看| 粉嫩欧美一区二区三区高清影视| 国产福利91精品一区| proumb性欧美在线观看| 91亚洲精品久久久蜜桃| 欧美午夜在线一二页| 欧美一二三四区在线| 国产日本一区二区| 亚洲欧洲精品一区二区三区| 一区二区成人在线观看| 久久不见久久见免费视频1| 高清不卡在线观看av| 欧美性xxxxxx少妇| 欧美电影免费提供在线观看| 中文字幕亚洲区| 日韩高清一级片| 国产精品一区二区在线播放| 91视频免费播放| 日韩一区二区免费视频| 国产精品久久久久国产精品日日| 一区二区欧美视频| 久久99精品一区二区三区三区| 国产成人午夜电影网| 欧美色图在线观看| 久久婷婷色综合| 亚洲另类在线制服丝袜| 蜜桃视频在线观看一区| 国产精品一二三在| 欧美人体做爰大胆视频| 国产日韩精品一区二区三区 | 国产一区二区三区精品视频| 91精品办公室少妇高潮对白| 欧美成人一区二区三区| 一卡二卡三卡日韩欧美| 国产成人aaaa| 欧美一区二区三区在线看| 亚洲免费在线电影| 国产乱子伦视频一区二区三区| 色94色欧美sute亚洲线路二 | 一区二区三区四区五区视频在线观看 | 精品99一区二区| 亚洲成人tv网| 色综合中文综合网| 国产精品免费看片| 免费看欧美美女黄的网站| 在线亚洲欧美专区二区| 中文字幕免费在线观看视频一区| 日韩国产精品久久久| 欧美又粗又大又爽| 18涩涩午夜精品.www| 狠狠色丁香久久婷婷综| 日韩你懂的在线播放| 五月开心婷婷久久| 在线免费观看日本一区| 国产精品久久久久婷婷| 国产一区二区成人久久免费影院| 日韩一区二区免费电影| 三级久久三级久久| 欧美三级电影网| 又紧又大又爽精品一区二区| www.欧美精品一二区| 中文字幕精品在线不卡| 成人h版在线观看| 国产精品人妖ts系列视频| 国产成人一级电影| 国产亚洲精品久| 国产99一区视频免费| 久久九九99视频|