Advertisement
Guest User

Untitled

a guest
Jan 11th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.84 KB | None | 0 0
  1. 01_engine_usage
  2.  
  3. from sqlalchemy import create_engine
  4. import os
  5.  
  6. if os.path.exists("some.db"):
  7. os.remove("some.db")
  8. engine = create_engine("sqlite:///some.db")
  9. engine.execute("""
  10. create table employee (
  11. emp_id integer primary key,
  12. emp_name varchar
  13. )
  14. """)
  15. engine.execute("insert into employee (emp_name) values (:emp_name)", emp_name="dilbert")
  16.  
  17. result = engine.execute("select * from employee")
  18. print(result.fetchall())
  19.  
  20.  
  21. =============================================================================
  22.  
  23.  
  24. 02_metadata
  25.  
  26. from sqlalchemy import MetaData
  27. from sqlalchemy import Table, Column
  28. from sqlalchemy import Integer, String
  29. from sqlalchemy import String, Numeric, DateTime, Enum,Unicode,UnicodeText
  30. from sqlalchemy import ForeignKey,ForeignKeyConstraint,create_engine
  31. import os
  32. from sqlalchemy import inspect
  33. e = create_engine("sqlite:///some.db")
  34. metaData=MetaData()
  35. user_table = Table('user', metaData,
  36. Column('id', Integer, primary_key=True),
  37. Column('name', String),
  38. Column('fullname', String)
  39. )
  40. addresses_table = Table('address', metaData,
  41. Column('id', Integer, primary_key=True),
  42. Column('email_address', String(100), nullable=False),
  43. Column('user_id', Integer, ForeignKey('user.id'))
  44. )
  45. story_table = Table('story', metaData,
  46. Column('story_id', Integer, primary_key=True),
  47. Column('version_id', Integer, primary_key=True),
  48. Column('headline', Unicode(100), nullable=False),
  49. Column('body', UnicodeText)
  50. )
  51. published_table = Table('published', metaData,
  52. Column('pub_id', Integer, primary_key=True),
  53. Column('pub_timestamp', DateTime, nullable=False),
  54. Column('story_id', Integer),
  55. Column('version_id', Integer),
  56. ForeignKeyConstraint(
  57. ['story_id', 'version_id'],
  58. ['story.story_id', 'story.version_id'])
  59. )
  60.  
  61. network_table= Table('network',metaData,
  62. Column('network_id', Integer, primary_key=True),
  63. Column('name', String(100), nullable=False),
  64. Column('created_at', DateTime, nullable=False),
  65. Column('owner_id', Integer,ForeignKey('user.id'))
  66. )
  67. metaData.create_all(e)
  68. metadata2=MetaData()
  69. reflect = Table('user', metadata2, autoload=True, autoload_with=e)
  70. inspector = inspect(e)
  71. columns=inspector.get_columns('network')
  72. for column in columns:
  73. print(column)
  74. results = []
  75. table_names=inspector.get_table_names()
  76. for table_name in table_names:
  77. for column in inspector.get_columns(table_name):
  78. if column['name'] == 'story_id':
  79. results+=table_name
  80. print(results)
  81.  
  82. Result:
  83.  
  84. {'primary_key': 1, 'nullable': False, 'default': None, 'name': 'network_id', 'type': INTEGER(), 'autoincrement': True}
  85. {'primary_key': 0, 'nullable': False, 'default': None, 'name': 'name', 'type': VARCHAR(length=100), 'autoincrement': True}
  86. {'primary_key': 0, 'nullable': False, 'default': None, 'name': 'created_at', 'type': DATETIME(), 'autoincrement': True}
  87. {'primary_key': 0, 'nullable': True, 'default': None, 'name': 'owner_id', 'type': INTEGER(), 'autoincrement': True}
  88. published
  89. story
  90.  
  91.  
  92. =====================================================
  93.  
  94.  
  95. 3. 03_sql_expressions
  96.  
  97. metadata = MetaData()
  98. engine = create_engine("sqlite:///some.db")
  99.  
  100. user_table = Table('user', metadata,
  101. Column('id', Integer, primary_key=True),
  102. Column('username', String(50)),
  103. Column('fullname', String(50))
  104. )
  105. metadata.create_all(engine)
  106.  
  107. print(user_table.c.fullname == 'ed')
  108. print(and_(user_table.c.fullname == 'ed',user_table.c.id > 5))
  109. print(or_(user_table.c.username == 'ed'))
  110.  
  111. conn = engine.connect()
  112. result = conn.execute(user_table.insert(), [{'username': 'dilbert', 'fullname': 'Dilbert Jones'}])
  113. print(result.inserted_primary_key)
  114.  
  115. select_some_values = select([user_table]).\
  116. where(
  117. or_(
  118. user_table.c.username == 'wendy',
  119. user_table.c.username == 'dilbert'
  120. )
  121. ).\
  122. order_by(user_table.c.fullname)
  123. conn.execute(select_some_values).fetchall()
  124.  
  125. addressTable = Table("address", metadata,
  126. Column('id', Integer, primary_key=True),
  127. Column('user_id', Integer, ForeignKey('user.id'),
  128. nullable=False),
  129. Column('email_address', String(100), nullable=False)
  130. )
  131. metadata.create_all(engine)
  132. conn.execute(addressTable.insert(), [
  133. {"user_id": 1, "email_address": "ed@ed.com"},
  134. {"user_id": 1, "email_address": "ed@gmail.com"},
  135. {"user_id": 2, "email_address": "jack@yahoo.com"},
  136. {"user_id": 3, "email_address": "wendy@gmail.com"},
  137. ])
  138.  
  139. select_query = select([user_table.c.fullname, address_table.c.email_address]).\
  140. select_from(user_table.join(address_table)).\
  141. where(user_table.c.username == 'ed').\
  142. order_by(address_table.c.email_addres)
  143. print(select_query)
  144.  
  145. result = user_table.update().values(fullname="Ed Jones").where(user_table.c.username == 'ed')
  146. conn.execute(result)
  147. print(result.rowcount)
  148.  
  149. bonus_query = user_table.update()
  150. .values(fullname = user_table.c.fullname + user_email.as_scalar())
  151. .where(user_table.c.username
  152. .in_({'jack', 'wendy'}))
  153. conn.execute(bonus_query)
  154.  
  155.  
  156. =============================================================================
  157.  
  158.  
  159. 04_orm
  160.  
  161. from sqlalchemy.ext.declarative import declarative_base
  162. from sqlalchemy import Column, Integer, String,ForeignKey,Numeric
  163. from sqlalchemy.orm import Session,relationship
  164. from sqlalchemy import create_engine
  165.  
  166. engine = create_engine("sqlite:///some.db")
  167. conn = engine.connect()
  168.  
  169. Base = declarative_base()
  170.  
  171. class Network(Base):
  172. __tablename__ = 'network'
  173. id = Column(Integer, primary_key=True)
  174. name = Column(String(100), nullable=False)
  175. def __repr__(self):
  176. return "Network: %r" % (self.name)
  177. Base.metadata.create_all(engine)
  178.  
  179. from sqlalchemy.orm import Session
  180. session = Session(bind = engine)
  181. session.add(Network(name = 'net1'))
  182. session.add(Network(name = 'net2'))
  183. session.commit()
  184. select_network = select([Network.__table__])
  185. result = conn.execute(select_network)
  186. print (result.fetchall())
  187.  
  188. class User(Base):
  189. __tablename__ = 'user'
  190. id = Column(Integer, primary_key=True)
  191. name = Column(String)
  192. fullname = Column(String)
  193. def __repr__(self):
  194. return "<User(%r, %r)>" % (
  195. self.name, self.fullname
  196. )
  197.  
  198. session.add_all([
  199. User(name='wendy', fullname='Wendy Weathersmith'),
  200. User(name='mary', fullname='Mary Contrary'),
  201. User(name='fred', fullname='Fred Flinstone')
  202. ])
  203.  
  204. query = session.query(User.fullname).order_by(User.fullname)
  205. print(query.all())
  206.  
  207. query2 = query.filter(User.name.in_(['mary', 'ed']))
  208. query2.all()
  209. print(query2[1])
  210.  
  211. query3 = session.query(User.name, Address.email_address).join(Address).filter(Address.email_address.in_(['j25@yahoo.com']))
  212. print(query3.all())
  213.  
  214. class Account(Base):
  215. __tablename__ = 'account'
  216. id = Column(Integer, primary_key=True)
  217. owner = Column(String(50), nullable=False)
  218. balance = Column(Numeric, default=0)
  219. def __repr__(self):
  220. return "Account: %r, %r" % (self.owner, self.balance)
  221.  
  222. class Transaction(Base):
  223. __tablename__ = 'transaction'
  224. id = Column(Integer, primary_key=True)
  225. amount = Column(Numeric, nullable=False)
  226. account_id = Column(Integer, ForeignKey(Account.__tablename__ + '.id'), nullable=False)
  227. account = relationship('Account', backref="transactions")
  228. def __repr__(self):
  229. return "Transaction: %r" % (self.amount)
  230.  
  231. session = Session(bind = engine)
  232. session.add_all([Account(owner = "Jack Jones", balance = 5000),
  233. Account(owner="Ed Rendell", balance=10000),
  234. Transaction(amount=500, account=account1),
  235. Transaction(amount=4500, account=account1),
  236. Transaction(amount=6000, account=account2),
  237. Transaction(amount = 4000, account = account2)])
  238. session.commit()
  239.  
  240. for account in session.query(Account).all():
  241. owner = account.owner
  242. balance = account.balance
  243. spent_money = 0
  244. for account_transaction in account.transactions:
  245. spent_money += account_transaction.amount
  246.  
  247. print("Account owner: " + str(owner) + '\t' +
  248. "Account balance: " + str(balance) + '\t' +
  249. "Spent money: " + str(spent_money))
  250.  
  251. Result:
  252. Account owner: Jack Jones Account balance: 5000.0000000000 Spent money: 5000.0000000000
  253. Account owner: Ed Rendell Account balance: 10000.0000000000 Spent money: 10000.0000000000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement