SQLAlchemy is a python ORM framework that maps tables into objects, similar to java's hibernate and mybatis.
And there are many supported databases:
FirebirdMicrosoft SQL Server
MySQL
Oracle
PostgreSQL
SQLite
Sybase
Other database extensions are also supported.
The following is the official use, first based on the previous article, developed in intellij idea+python plugin mode
First install the dependencies, right click on the project -> open mudule settings->SDKs->packages
Click the + sign on the right
Enter mysqlclient and click install
Then install sqlalchemy in this way
The final display is as follows:
I have a problem here, mysqlclient cannot be installed
Because many functions on windows system depend on visio, downloading a visio studio community version can solve this problem.
My choice is to use ubuntu, save trouble
New TestSqlAlchemy.py:
import sqlalchemy from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey, select print(sqlalchemy.__version__) # connect db engine = create_engine('mysql://root:[email protected]/tools', echo=True) print(engine) # create tables metadata = MetaData() users = Table('users', metadata, Column('id', Integer, primary_key=True), Column('name', String(50)), Column('fullname', String(50)), ) addresses = Table('addresses', metadata, Column('id', Integer, primary_key=True), Column('user_id', None, ForeignKey('users.id')), Column('email_address', String(50), nullable=False) ) metadata.create_all(engine) # insert data conn = engine.connect() ins = users.insert().values(name='jack', fullname='Jack Jones') result = conn.execute(ins) print(result.inserted_primary_key) # insert muilt data conn.execute(users.insert(), [ {'id': 20, 'name': 'jack', 'fullname': 'jack Jones'}, {'id': 21, 'name': 'rose', 'fullname': 'rose Jones'} ]) conn.execute(addresses.insert(), [ {'user_id': 20, 'email_address': '[email protected]'}, {'user_id': 21, 'email_address': '[email protected]'} ]) # find data s = select([users]) result=conn.execute(s) for row in result: print(row) result.close() # find join data s = select([users, addresses]).where(users.c.id == addresses.c.user_id) result=conn.execute(s) for row in result: print(row) result.close()operation result:
/usr/bin/python3.6 /home/justeene/IdeaProjects/TestPython/TestSqlAlchemy.py 1.2.7 Engine(mysql://root:***@192.168.1.20/tools) 2018-05-06 17:08:00,523 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode' 2018-05-06 17:08:00,524 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,533 INFO sqlalchemy.engine.base.Engine SELECT DATABASE() 2018-05-06 17:08:00,533 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,539 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin' 2018-05-06 17:08:00,539 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,547 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1 2018-05-06 17:08:00,547 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,551 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1 2018-05-06 17:08:00,551 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,554 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin AS anon_1 2018-05-06 17:08:00,554 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,560 INFO sqlalchemy.engine.base.Engine DESCRIBE `users` 2018-05-06 17:08:00,560 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,567 INFO sqlalchemy.engine.base.Engine DESCRIBE `addresses` 2018-05-06 17:08:00,567 INFO sqlalchemy.engine.base.Engine () 2018-05-06 17:08:00,579 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name, fullname) VALUES (%s, %s) 2018-05-06 17:08:00,579 INFO sqlalchemy.engine.base.Engine ('jack', 'Jack Jones') 2018-05-06 17:08:00,589 INFO sqlalchemy.engine.base.Engine COMMIT [2] 2018-05-06 17:08:00,608 INFO sqlalchemy.engine.base.Engine INSERT INTO users (id, name, fullname) VALUES (%s, %s, %s) 2018-05-06 17:08:00,608 INFO sqlalchemy.engine.base.Engine ((20, 'jack', 'jack Jones'), (21, 'rose', 'rose Jones')) 2018-05-06 17:08:00,611 INFO sqlalchemy.engine.base.Engine COMMIT 2018-05-06 17:08:00,643 INFO sqlalchemy.engine.base.Engine INSERT INTO addresses (user_id, email_address) VALUES (%s, %s) 2018-05-06 17:08:00,643 INFO sqlalchemy.engine.base.Engine ((20, '[email protected]'), (21, '[email protected]')) 2018-05-06 17:08:00,647 INFO sqlalchemy.engine.base.Engine COMMIT 2018-05-06 17:08:00,665 INFO sqlalchemy.engine.base.Engine SELECT users.id, users.name, users.fullname FROM users 2018-05-06 17:08:00,665 INFO sqlalchemy.engine.base.Engine () (1, 'jack', 'Jack Jones') (2, 'jack', 'Jack Jones') (20, 'jack', 'jack Jones') (21, 'rose', 'rose Jones') 2018-05-06 17:08:00,670 INFO sqlalchemy.engine.base.Engine SELECT users.id, users.name, users.fullname, addresses.id, addresses.user_id, addresses.email_address FROM users, addresses WHERE users.id = addresses.user_id 2018-05-06 17:08:00,670 INFO sqlalchemy.engine.base.Engine () (20, 'jack', 'jack Jones', 1, 20, '[email protected]') (21, 'rose', 'rose Jones', 2, 21, '[email protected]') Process finished with exit code 0