Advertisement
Guest User

Untitled

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