SQLAlchemy tutorial

SQLAlchemy is a python ORM framework that maps tables into objects, similar to java's hibernate and mybatis.

And there are many supported databases:

Firebird
Microsoft 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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325763764&siteId=291194637