Advertisement
Guest User

Untitled

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