當前位置:首頁 » 編程語言 » mysqlpython連接池

mysqlpython連接池

發布時間: 2024-10-27 16:02:35

❶ 鐢≒ython榪炴帴Mysql鐨勫嚑縐嶆柟寮忚﹁В_python


榪欑瘒鏂囩珷涓昏佷粙緇嶄簡鐢 Python 榪炴帴 MySQL 鐨勫嚑縐嶆柟寮忥紝澶у跺彲浠ユ牴鎹瀹為檯鎯呭喌閫夋嫨鍚堢悊鐨勮繛鎺ユ柟寮,闇瑕佺殑鏈嬪弸鍙浠ュ弬鑰冧笅
灝界″緢澶 NoSQL 鏁版嵁搴撹繎鍑犲勾澶ф斁寮傚僵錛屼絾鏄鍍 MySQL 榪欐牱鐨勫叧緋誨瀷鏁版嵁搴撲緷鐒舵槸浜掕仈緗戠殑涓繪祦鏁版嵁搴撲箣涓錛屾瘡涓瀛 Python 鐨勯兘鏈夊繀瑕佸﹀ソ涓闂ㄦ暟鎹搴擄紝涓嶇′綘鏄鍋氭暟鎹鍒嗘瀽錛岃繕鏄緗戠粶鐖鉶錛學eb 寮鍙戙佷害鎴栨槸鏈哄櫒瀛︿範錛屼綘閮界諱笉寮瑕佸拰鏁版嵁搴撴墦浜ら亾錛岃 MySQL 鍙堟槸鏈嫻佽岀殑涓縐嶆暟鎹搴擄紝榪欑瘒鏂囩珷浠嬬粛 Python 鎿嶄綔 MySQL 鐨勫嚑縐嶆柟寮忥紝浣犲彲浠ュ湪瀹為檯寮鍙戣繃紼嬩腑鏍規嵁瀹為檯鎯呭喌鍚堢悊閫夋嫨銆
1銆丮ySQL-python
MySQL-python 鍙堝彨 MySQLdb錛屾槸 Python 榪炴帴 MySQL 鏈嫻佽岀殑涓涓椹卞姩錛屽緢澶氭嗘灦閮戒篃鏄鍩轟簬姝ゅ簱榪涜屽紑鍙戱紝閬楁喚鐨勬槸瀹冨彧鏀鎸 Python2.x錛岃屼笖瀹夎呯殑鏃跺欐湁寰堝氬墠緗鏉′歡錛屽洜涓哄畠鏄鍩轟簬C寮鍙戠殑搴擄紝鍦 Windows 騫沖彴瀹夎呴潪甯鎬笉鍙嬪ソ錛岀粡甯稿嚭鐜板け璐ョ殑鎯呭喌錛岀幇鍦ㄥ熀鏈涓嶆帹鑽愪嬌鐢錛屽彇浠g殑鏄瀹冪殑琛嶇敓鐗堟湰銆
# 鍓嶇疆鏉′歡
sudo apt-get install python-dev libmysqlclient-dev # Ubuntu
sudo yum install python-devel mysql-devel # Red Hat / CentOS
# 瀹夎
pip install MySQL-pythonWindows 鐩存帴閫氳繃涓嬭澆 exe 鏂囦歡瀹夎咃紝鍏浼楀彿鍥炲嶃寃in銆嶈幏鍙栦笅杞介摼鎺
#!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(
host="localhost", # 涓繪満鍚
user="john", # 鐢ㄦ埛鍚
passwd="megajonhy", # 瀵嗙爜
db="jonhydb") # 鏁版嵁搴撳悕縐
# 鏌ヨ㈠墠錛屽繀欏誨厛鑾峰彇娓告爣
cur = db.cursor()
# 鎵ц岀殑閮芥槸鍘熺敓SQL璇鍙
cur.execute("SELECT * FROM YOUR_TABLE_NAME")
for row in cur.fetchall():
print(row[0])
db.close()2銆乵ysqlclient
鐢變簬 MySQL-python 騫翠箙澶變慨錛屽悗鏉ュ嚭鐜頒簡瀹冪殑 Fork 鐗堟湰 mysqlclient錛屽畬鍏ㄥ吋瀹 MySQLdb錛屽悓鏃舵敮鎸 Python3.x錛屾槸 Django ORM鐨勪緷璧栧伐鍏鳳紝濡傛灉浣犳兂浣跨敤鍘熺敓 SQL 鏉ユ搷浣滄暟鎹搴擄紝閭d箞鎺ㄨ崘姝ら┍鍔ㄣ傚畨瑁呮柟寮忓拰 MySQLdb 鏄涓鏍風殑錛學indows 鍙浠ュ湪 https://www.lfd.uci.e/~gohlke/pythonlibs/#mysqlclient 緗戠珯鎵懼埌 瀵瑰簲鐗堟湰鐨 whl 鍖呬笅杞藉畨瑁呫
# Windows瀹夎
pip install some-package.whl
# linux 鍓嶇疆鏉′歡
sudo apt-get install python3-dev # debian / Ubuntu
sudo yum install python3-devel # Red Hat / CentOS
brew install mysql-connector-c # macOS (Homebrew)
pip install mysqlclient3銆丳yMySQL
PyMySQL 鏄綰 Python 瀹炵幇鐨勯┍鍔錛岄熷害涓婃瘮涓嶄笂 MySQLdb錛屾渶澶х殑鐗圭偣鍙鑳藉氨鏄瀹冪殑瀹夎呮柟寮忔病閭d箞綣佺悙錛屽悓鏃朵篃鍏煎 MySQL-python
pip install PyMySQL
# 涓轟簡鍏煎筸ysqldb錛屽彧闇瑕佸姞鍏
pymysql.install_as_MySQLdb()涓涓渚嬪瓙
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd="xxx", db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
print(r)
cur.close()
conn.close()4銆乸eewee
鍐欏師鐢 SQL 鐨勮繃紼嬮潪甯哥箒鐞愶紝浠g爜閲嶅嶏紝娌℃湁闈㈠悜瀵硅薄鎬濈淮錛岀戶鑰岃癁鐢熶簡寰堝氬皝瑁 wrapper 鍖呭拰 ORM 妗嗘灦錛孫RM 鏄 Python 瀵硅薄涓庢暟鎹搴撳叧緋昏〃鐨勪竴縐嶆槧灝勫叧緋伙紝鏈変簡 ORM 浣犱笉鍐嶉渶瑕佸啓 SQL 璇鍙ャ傛彁楂樹簡鍐欎唬鐮佺殑閫熷害錛屽悓鏃跺吋瀹瑰氱嶆暟鎹搴撶郴緇燂紝濡俿qlite, mysql銆乸ostgresql錛屼粯鍑虹殑浠d環鍙鑳藉氨鏄鎬ц兘涓婄殑涓浜涙崯澶便傚傛灉浣犲 Django 鑷甯︾殑 ORM 鐔熸倝鐨勮瘽錛岄偅涔 peewee鐨勫︿範鎴愭湰鍑犱箮涓洪浂銆傚畠鏄 Python 涓鏄鏈嫻佽岀殑 ORM 妗嗘灦銆
pip install peewee
涓涓渚嬪瓙
import peewee
from peewee import *
db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')
class Book(peewee.Model):
author = peewee.CharField()
title = peewee.TextField()
class Meta:
database = db
Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
print(book.title)瀹樻柟鏂囨。錛歨ttp://docs.peewee-orm.com/en/latest/peewee/installation.html
5銆丼QLAlchemy
濡傛灉鎯蟲壘涓縐嶆棦鏀鎸佸師鐢 SQL錛屽張鏀鎸 ORM 鐨勫伐鍏鳳紝閭d箞 SQLAlchemy 鏄鏈濂界殑閫夋嫨錛屽畠闈炲父鎺ヨ繎 Java 涓鐨 Hibernate 妗嗘灦銆
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy_declarative import Address, Base, Person
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
street_name = Column(String(250))
engine = create_engine('sqlite:///sqlalchemy_example.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()
# Insert a Person in the person table
new_person = Person(name='new person')
session.add(new_person)
session.commit()鐜板湪宸涓嶅氭悶鏄庣櫧浜嗚繖鍑犵嶆暟鎹搴撻┍鍔ㄧ殑浼樺姡錛屾帴涓嬫潵浣犲氨鍙浠ラ夋嫨鍏朵腑鐨勪竴涓榪涜岀郴緇熺殑瀛︿範鍐嶆妸瀹冨簲鐢ㄥ埌欏圭洰涓鍘諱簡錛岀濅綘瀛︿範寮蹇冿紝涓嶆噦鐨勫彲浠ュ挩璇㈡垜鍝堛

❷ 基於Pandas的數據分析平台,數據連接該不該用SqlAlchemy的ORM

一、開始使用:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
DB_CONNECT_STRING = 'mysql+mysqldb://root:123@localhost/ooxx?charset=utf8'
engine = create_engine(DB_CONNECT_STRING, echo=True)
DB_Session = sessionmaker(bind=engine)
session = DB_Session()
這里的 DB_CONNECT_STRING 就是連接資料庫的路徑。「mysql+mysqldb」指定了使用 MySQL-Python 來連接,「root」和「123」分別是用戶名和密碼,「localhost」是資料庫的域名,「ooxx」是使用的資料庫名(可省略),「charset」指定了連接時使用的字元集(可省略)。
create_engine() 會返回一個資料庫引擎,echo 參數為 True 時,會顯示每條執行的 SQL 語句,生產環境下可關閉。
sessionmaker() 會生成一個資料庫會話類。這個類的實例可以當成一個資料庫連接,它同時還記錄了一些查詢的數據,並決定什麼時候執行 SQL 語句。由於 SQLAlchemy 自己維護了一個資料庫連接池(默認 5 個連接),因此初始化一個會話的開銷並不大。對 Tornado 而言,可以在 BaseHandler 的 initialize() 里初始化:
class BaseHandler(tornado.web.RequestHandler):
def initialize(self):
self.session = models.DB_Session()

def on_finish(self):
self.session.close()
對其他 Web 伺服器來說,可以使用 sqlalchemy.orm.scoped_session,它能保證每個線程獲得的 session 對象都是唯一的。不過 Tornado 本身就是單線程的,如果使用了非同步方式,就可能會出現問題,因此並沒使用它。

拿到 session 後,就可以執行 SQL 了:
session.execute('create database abc')
print session.execute('show databases').fetchall()
session.execute('use abc')
# 建 user 表的過程略
print session.execute('select * from user where id = 1').first()
print session.execute('select * from user where id = :id', {'id': 1}).first()
不過這和直接使用 MySQL-Python 沒啥區別;ORM 的方式,這也是採用 SQLAlchemy 的唯一原因。

於是來定義一個表:
from sqlalchemy import Column
from sqlalchemy.types import CHAR, Integer, String
from sqlalchemy.ext.declarative import declarative_base

BaseModel = declarative_base()

def init_db():
BaseModel.metadata.create_all(engine)

def drop_db():
BaseModel.metadata.drop_all(engine)

class User(BaseModel):
__tablename__ = 'user'

id = Column(Integer, primary_key=True)
name = Column(CHAR(30)) # or Column(String(30))

init_db()
declarative_base() 創建了一個 BaseModel 類,這個類的子類可以自動與一個表關聯。
以 User 類為例,它的 __tablename__ 屬性就是資料庫中該表的名稱,它有 id 和 name 這兩個欄位,分別為整型和 30 個定長字元。Column 還有一些其他的參數,我就不解釋了。
最後,BaseModel.metadata.create_all(engine) 會找到 BaseModel 的所有子類,並在資料庫中建立這些表;drop_all() 則是刪除這些表。

接著就開始使用這個表吧:
from sqlalchemy import func, or_, not_

user = User(name='a')
session.add(user)
user = User(name='b')
session.add(user)
user = User(name='a')
session.add(user)
user = User()
session.add(user)
session.commit()

query = session.query(User)
print query # 顯示SQL 語句
print query.statement # 同上
for user in query: # 遍歷時查詢
print user.name
print query.all() # 返回的是一個類似列表的對象
print query.first().name # 記錄不存在時,first() 會返回 None
# print query.one().name # 不存在,或有多行記錄時會拋出異常
print query.filter(User.id == 2).first().name
print query.get(2).name # 以主鍵獲取,等效於上句
print query.filter('id = 2').first().name # 支持字元串

query2 = session.query(User.name)
print query2.all() # 每行是個元組
print query2.limit(1).all() # 最多返回 1 條記錄
print query2.offset(1).all() # 從第 2 條記錄開始返回
print query2.order_by(User.name).all()
print query2.order_by('name').all()
print query2.order_by(User.name.desc()).all()
print query2.order_by('name desc').all()
print session.query(User.id).order_by(User.name.desc(), User.id).all()

print query2.filter(User.id == 1).scalar() # 如果有記錄,返回第一條記錄的第一個元素
print session.query('id').select_from(User).filter('id = 1').scalar()
print query2.filter(User.id > 1, User.name != 'a').scalar() # and
query3 = query2.filter(User.id > 1) # 多次拼接的 filter 也是 and
query3 = query3.filter(User.name != 'a')
print query3.scalar()
print query2.filter(or_(User.id == 1, User.id == 2)).all() # or
print query2.filter(User.id.in_((1, 2))).all() # in

query4 = session.query(User.id)
print query4.filter(User.name == None).scalar()
print query4.filter('name is null').scalar()
print query4.filter(not_(User.name == None)).all() # not
print query4.filter(User.name != None).all()

print query4.count()
print session.query(func.count('*')).select_from(User).scalar()
print session.query(func.count('1')).select_from(User).scalar()
print session.query(func.count(User.id)).scalar()
print session.query(func.count('*')).filter(User.id > 0).scalar() # filter() 中包含 User,因此不需要指定表
print session.query(func.count('*')).filter(User.name == 'a').limit(1).scalar() == 1 # 可以用 limit() 限制 count() 的返回數
print session.query(func.sum(User.id)).scalar()
print session.query(func.now()).scalar() # func 後可以跟任意函數名,只要該資料庫支持
print session.query(func.current_timestamp()).scalar()
print session.query(func.md5(User.name)).filter(User.id == 1).scalar()

query.filter(User.id == 1).update({User.name: 'c'})
user = query.get(1)
print user.name

user.name = 'd'
session.flush() # 寫資料庫,但並不提交
print query.get(1).name

session.delete(user)
session.flush()
print query.get(1)

session.rollback()
print query.get(1).name
query.filter(User.id == 1).delete()
session.commit()
print query.get(1)

二、進階的知識。
1)如何批量插入大批數據?
可以使用非 ORM 的方式:
session.execute(
User.__table__.insert(),
[{'name': `randint(1, 100)`,'age': randint(1, 100)} for i in xrange(10000)]
)
session.commit()

如何批量插入大批數據?
可以使用非 ORM 的方式:
session.execute(
User.__table__.insert(),
[{'name': `randint(1, 100)`,'age': randint(1, 100)} for i in xrange(10000)]
)
session.commit()
上面批量插入了 10000 條記錄,半秒內就執行完了;而 ORM 方式會花掉很長時間。

2)如何讓執行的 SQL 語句增加前綴?
使用 query 對象的 prefix_with() 方法:
session.query(User.name).prefix_with('HIGH_PRIORITY').all()
session.execute(User.__table__.insert().prefix_with('IGNORE'), {'id': 1, 'name': '1'})

3)如何替換一個已有主鍵的記錄?
使用 session.merge() 方法替代 session.add(),其實就是 SELECT + UPDATE:
user = User(id=1, name='ooxx')
session.merge(user)
session.commit()
或者使用 MySQL 的 INSERT … ON DUPLICATE KEY UPDATE,需要用到 @compiles 裝飾器,有點難懂,自己看吧:《SQLAlchemy ON DUPLICATE KEY UPDATE》 和 sqlalchemy_mysql_ext。

4)如何使用無符號整數?
可以使用 MySQL 的方言:
from sqlalchemy.dialects.mysql import INTEGER

id = Column(INTEGER(unsigned=True), primary_key=True)

5)模型的屬性名需要和表的欄位名不一樣怎麼辦?
開發時遇到過一個奇怪的需求,有個其他系統的表裡包含了一個「from」欄位,這在 Python 里是關鍵字,於是只能這樣處理了:
from_ = Column('from', CHAR(10))

6)如何獲取欄位的長度?
Column 會生成一個很復雜的對象,想獲取長度比較麻煩,這里以 User.name 為例:
User.name.property.columns[0].type.length

7)如何指定使用 InnoDB,以及使用 UTF-8 編碼?
最簡單的方式就是修改資料庫的默認配置。如果非要在代碼里指定的話,可以這樣:
class User(BaseModel):
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
MySQL 5.5 開始支持存儲 4 位元組的 UTF-8 編碼的字元了,iOS 里自帶的 emoji(如 ?? 字元)就屬於這種。
如果是對表來設置的話,可以把上面代碼中的 utf8 改成 utf8mb4,DB_CONNECT_STRING 里的 charset 也這樣更改。
如果對庫或欄位來設置,則還是自己寫 SQL 語句比較方便,具體細節可參考《How to support full Unicode in MySQL databases》。
不建議全用 utf8mb4 代替 utf8,因為前者更慢,索引會佔用更多空間。

8)如何設置外鍵約束?
from random import randint
from sqlalchemy import ForeignKey

class User(BaseModel):
__tablename__ = 'user'

id = Column(Integer, primary_key=True)
age = Column(Integer)

class Friendship(BaseModel):
__tablename__ = 'friendship'

id = Column(Integer, primary_key=True)
user_id1 = Column(Integer, ForeignKey('user.id'))
user_id2 = Column(Integer, ForeignKey('user.id'))

for i in xrange(100):
session.add(User(age=randint(1, 100)))
session.flush() # 或 session.commit(),執行完後,user 對象的 id 屬性才可以訪問(因為 id 是自增的)

for i in xrange(100):
session.add(Friendship(user_id1=randint(1, 100), user_id2=randint(1, 100)))
session.commit()

session.query(User).filter(User.age < 50).delete()
執行這段代碼時,應該會遇到一個錯誤:
sqlalchemy.exc.IntegrityError: (IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`ooxx`.`friendship`, CONSTRAINT `friendship_ibfk_1` FOREIGN KEY (`user_id1`) REFERENCES `user` (`id`))') 'DELETE FROM user WHERE user.age < %s' (50,)原因是刪除 user 表的數據,可能會導致 friendship 的外鍵不指向一個真實存在的記錄。在默認情況下,MySQL 會拒絕這種操作,也就是 RESTRICT。InnoDB 還允許指定 ON DELETE 為 CASCADE 和 SET NULL,前者會刪除 friendship 中無效的記錄,後者會將這些記錄的外鍵設為 NULL。
除了刪除,還有可能更改主鍵,這也會導致 friendship 的外鍵失效。於是相應的就有 ON UPDATE 了。其中 CASCADE 變成了更新相應的外鍵,而不是刪除。
而在 SQLAlchemy 中是這樣處理的:
class Friendship(BaseModel):
__tablename__ = 'friendship'

id = Column(Integer, primary_key=True)
user_id1 = Column(Integer, ForeignKey('user.id', ondelete='CASCADE', onupdate='CASCADE'))
user_id2 = Column(Integer, ForeignKey('user.id', ondelete='CASCADE', onupdate='CASCADE'))

9)如何連接表?
from sqlalchemy import distinct
from sqlalchemy.orm import aliased

Friend = aliased(User, name='Friend')

print session.query(User.id).join(Friendship, User.id == Friendship.user_id1).all() # 所有有朋友的用戶
print session.query(distinct(User.id)).join(Friendship, User.id == Friendship.user_id1).all() # 所有有朋友的用戶(去掉重復的)
print session.query(User.id).join(Friendship, User.id == Friendship.user_id1).distinct().all() # 同上
print session.query(Friendship.user_id2).join(User, User.id == Friendship.user_id1).order_by(Friendship.user_id2).distinct().all() # 所有被別人當成朋友的用戶
print session.query(Friendship.user_id2).select_from(User).join(Friendship, User.id == Friendship.user_id1).order_by(Friendship.user_id2).distinct().all() # 同上,join 的方向相反,但因為不是 STRAIGHT_JOIN,所以 MySQL 可以自己選擇順序
print session.query(User.id, Friendship.user_id2).join(Friendship, User.id == Friendship.user_id1).all() # 用戶及其朋友
print session.query(User.id, Friendship.user_id2).join(Friendship, User.id == Friendship.user_id1).filter(User.id < 10).all() # id 小於 10 的用戶及其朋友
print session.query(User.id, Friend.id).join(Friendship, User.id == Friendship.user_id1).join(Friend, Friend.id == Friendship.user_id2).all() # 兩次 join,由於使用到相同的表,因此需要別名
print session.query(User.id, Friendship.user_id2).outerjoin(Friendship, User.id == Friendship.user_id1).all() # 用戶及其朋友(無朋友則為 None,使用左連接)
-

❸ 如何實現python的mysql連接池並加入緩存過期

如何實現python的mysql連接池並加入緩存過期
conn本來 就已經被你定義成了 函數, conn.ping()當然不存在了。而且你要的資料庫連接c,還被手動關閉了。我覺得有兩點 1. 按照你這個腳本的情況,你用一次,就新建一個資料庫連接問題應該不大。 2. 要保持使用一個連接的話。把c作全局變數 c=MyS.

❹ python爬蟲簡歷怎麼寫

python爬蟲簡歷怎麼寫?
python爬蟲簡歷如下:
1. 基本信息
求職崗位:Python爬蟲工程師(全職)
期望薪資:15000以上
姓名:xx
手機號碼:xxxx
郵箱:[email protected]
畢業院校:廈門大學軟體學院
2.掌握技能
1.Python中8種數據類型的精通使用
2.Python匿名函數、列表推導式、裝飾器的熟練使用
3.Python中re、requests、beautifulSoup等庫的熟練使用
4.Python爬蟲框架Scrapy的熟練使用
5.Python爬蟲偽裝中代理IP、UserAgent的熟練使用
6.Python與scrapyt-redis分布式爬蟲的基本使用
7.Python操作Mysql資料庫增刪改查
8.Python操作MongoDB資料庫增刪改查
9.Python建立資料庫連接池提高效率
10.團隊協作開發工具git的熟練使用
11.熟悉Linux日常工作環境,熟練掌握常用命令和調優監控手段
12.python機器學習庫scikit-learn庫的熟練使用
13.python科學計算庫numpy、scipy和數據分析庫pandas的熟練使用
3.項目經驗
1.基於Selenium的12306自動刷票軟體
2.基於Scrapy爬取伯樂在線網站存入mysql資料庫
3.基於GradientBoosting模型的廈門市房價預測系統
4.個人特質
1.思維清晰,優化代碼,解決Bug,能夠獨立完成項目
2.邏輯推理能力較強,理解能力較強
3.代碼可讀性強,代碼可復用性高,變數命名規范。
4.喜歡寫博客分享心得,個人博客:xxxx
5.接受996工作制
5.其他
可能對貴司有用的個人相關信息:
1.有硬體維護實施經驗,能夠部署伺服器和區域網。
2.個人期望在大城市發展,以後往數據科學家方向發展。
3.有隊伍管理經驗,大學期間任龍舟隊隊長,培訓班級任班長協助老師給同學解決問題。
相關推薦:《Python教程》以上就是小編分享的關於python爬蟲簡歷怎麼寫的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

熱點內容
安卓手機電量為什麼越充越少 發布:2024-10-27 18:24:20 瀏覽:191
linux輸出文件 發布:2024-10-27 18:22:41 瀏覽:179
久益壓縮機頭 發布:2024-10-27 18:17:10 瀏覽:543
諜影重重合集ftp 發布:2024-10-27 18:17:10 瀏覽:88
如何關閉安卓手機語音控制 發布:2024-10-27 18:12:50 瀏覽:109
win2008ftp密碼設置 發布:2024-10-27 18:02:58 瀏覽:862
left函數sql 發布:2024-10-27 18:00:47 瀏覽:520
江西省農保卡默認密碼是多少 發布:2024-10-27 17:58:13 瀏覽:575
說唱壓縮器 發布:2024-10-27 17:54:56 瀏覽:672
java位或運算符 發布:2024-10-27 17:54:16 瀏覽:917